2013-10-14 17 views
0

我使用PHP MySQL創建了一個Web應用程序。在開發後,我需要添加允許存檔年度數據的功能,這意味着我可以複製整個數據庫的adhoc解決方案。在PHP中切換數據庫連接MySQL

問題是,我有一個標準的'connections.php'文件,它包含在我係統的所有php文件中,它存儲數據庫服務器認證細節和名稱。代碼如下:

$hostname_db_ntu = "localhost"; 
$database_db_ntu = "ntu"; 
$username_db_ntu = "root"; 
$password_db_ntu = ""; 
$db_ntu = mysql_pconnect($hostname_db_ntu, $username_db_ntu, $password_db_ntu) or trigger_error(mysql_error(),E_USER_ERROR); 

那麼,如何讓我的系統在運行中切換數據庫?我需要基本上更改'$ database_db_ntu'變量值。是使用另一個PHP我唯一的選擇編輯php文件?

(我知道mysql_ *折舊,而據我所反駁它可能)

編輯:爲了澄清:

整個系統採用多個表的數據庫,所有的頁面使用此代碼位於上面的包含文件與該數據庫連接。

我需要一個解決方案,我可以在某種程度上修改此包含文件以反映所選數據庫,並相應地創建連接。

+0

將'mysql_ *'更改爲例如'PDO'。並且不要編輯該文件。這沒有任何意義。當您需要連接到另一個數據庫時,只需創建新連接。 –

+0

不推薦使用'mysql'使用'mysqli'並嘗試創建一個連接數據庫並將主機名,密碼,dbName等作爲參數的函數 – UDB

回答

1

建立另一個數據庫連接。這應該工作。

$db_ntu2 = mysql_pconnect($hostname_db_ntu2, $username_db_ntu2, $password_db_ntu2) or trigger_error(mysql_error(),E_USER_ERROR); 
+0

兩個數據庫中的表在結構和命名上完全相似。不起作用。 –

1
 $hostname_db_ntu = "your host name"; 
     $database_db_ntu = "your database name"; 
     $username_db_ntu = "root or username you have set"; 
     $password_db_ntu = ""; 
    $db_ntu = mysql_connect($hostname_db_ntu, $username_db_ntu, $password_db_ntu) or trigger_error(mysql_error(),E_USER_ERROR); 

    $db_connect = mysql_select_db(" $database_db_ntu" ,$db_ntu) or die("!db"); 
+0

這可能只是給了我一個想法。讓我試着回到你身邊。 –

1

如何使用if ... else語句:

if ($dbcon1) { 
$hostname_db_ntu = "localhost"; 
$database_db_ntu = "ntu"; 
$username_db_ntu = "root"; 
$password_db_ntu = ""; 
$db_ntu = mysql_pconnect($hostname_db_ntu, $username_db_ntu, $password_db_ntu) or trigger_error(mysql_error(),E_USER_ERROR); 
} else { 

//database connection2 here 
} 

然後你需要傳遞的$ dbcon1一個值來決定要使用的連接。

0

所以,這就是我所做的。我根據用戶想要使用的數據庫版本來設置會話變量。然後,我編輯我的全球「connections.php」腳本如下:

session_start(); 
$hostname_db_ntu = "localhost"; 
if(isset($_SESSION['version'])) 
$database_db_ntu = $_SESSION['version']; 
else 
$database_db_ntu = "ntu"; 
$username_db_ntu = "root"; 
$password_db_ntu = ""; 
$db_ntu = mysql_pconnect($hostname_db_ntu, $username_db_ntu, $password_db_ntu) or trigger_error(mysql_error(),E_USER_ERROR); 

的優勢,以這種方法,我可以允許用戶切換數據庫,而不必去和編輯我的每一個PHP文件,其使用數據庫。