| 經驗交流 |
|
|---|---|
|
連結資料庫(二) | |
問題說明 | |
| 當我們的應用程式規模較大,需要同時連結兩個以上的資料庫,在使用 mysql_query( ) 進行查詢時,就會相當不方便了。 | |
我的做法 | |
| 假如程式需要同時連結兩個資料庫,我會在 configure.php 中先設定下列的資料: | |
|
<? // Config for Primary Database $cfgDB_HOST_1 = 'localhost'; $cfgDB_PORT_1 = '3306'; $cfgDB_USERNAME_1 = 'chensh'; $cfgDB_PASSWORD_1 = '123456'; $cfgDB_NAME_1 = "MyDatabase"; // Config for Secondary Database $cfgDB_HOST_2 = '163.16.1.**'; $cfgDB_PORT_2 = '3306'; $cfgDB_USERNAME_2 = 'chensh'; $cfgDB_PASSWORD_2 = '123456'; $cfgDB_NAME_2 = "OtherDatabase"; ?> | |
|
再分別建立下列兩個檔案(connect_db_1.php 與 connect_db_2.php): | |
|
<? // 建立資料庫連線(for MyDatabase) $link_1 = mysql_connect($cfgDB_HOST_1 . ":" . $cfgDB_PORT_1, $cfgDB_USERNAME_1, $cfgDB_PASSWORD_1); ?> | |
|
<? // 建立資料庫連線(for OtherDatabase) $link_2 = mysql_connect($cfgDB_HOST_2 . ":" . $cfgDB_PORT_2, $cfgDB_USERNAME_2, $cfgDB_PASSWORD_2); ?> | |
|
然後,在每一支需要連結資料庫的程式中,都將它們包進來(它們被放在根目錄下),便可對資料庫進行存取的動作了。請看下方的例子: | |
|
<? // 取得系統組態 include ("/configure.php"); // 連結 MyDatabase(視需要而定) include ("/connect_db_1.php"); // 連結 OtherDatabase(視需要而定) include ("/connect_db_2.php"); // 自 user table 中讀取資料(MyDatabase) $sql = "SELECT * from user WHERE username = 'chensh' "; $rs_u = mysql_db_query($cfgDB_NAME_1, $sql, $link_1); ...... // 自 student table 中讀取資料(OtherDatabase) $sql = "SELECT * from student WHERE stu_name = 'chensh' "; $rs_s = mysql_db_query($cfgDB_NAME_2, $sql, $link_2); ?> | |
|
在上述的程式中,需要同時查詢位於兩個不同資料庫中的資料,所以必須同時將 connect_db_1.php 與 connect_db_2.php 包含進來。 | |
| 此外,我改用 mysql_db_query( ) 來取代 mysql_query( ),在執行資料庫存取動作時,才指定資料庫名稱,以保持程式維護上的彈性。 | |
| 若將 connect_db_1.php 與 connect_db_2.php 合而為一呢? | |
| 千萬不要這麼做!試想:不會每支程式都同時需要連結這兩個資料庫吧!避免建立不必要的連線,方能減輕資料庫的負擔,這是我的經驗。 | |
| 經驗交流 |
|


問題說明