1

我使用 PHP MySQL 制作了一个 Web 应用程序。开发后,我需要添加允许归档年度数据的功能,这转化为我复制整个数据库的临时解决方案。

问题是,我有一个标准的“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_* 已经贬值了,我已经尽可能地反驳了。)

编辑:澄清:

整个系统使用一个有多个表的数据库,所有的页面都使用上面的这个包含文件连接到该数据库。

我需要一个解决方案,我可以以某种方式修改这个包含的文件以反映所选的数据库,并相应地创建连接。

4

4 回答 4

2

如何使用 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 传递一个值来决定使用哪个连接。

于 2013-10-14T07:15:00.603 回答
1

建立另一个数据库连接。那应该行得通。

$db_ntu2 = mysql_pconnect($hostname_db_ntu2, $username_db_ntu2, $password_db_ntu2) or trigger_error(mysql_error(),E_USER_ERROR);
于 2013-10-14T06:45:08.643 回答
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");
于 2013-10-14T06:45:11.300 回答
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 文件。

于 2013-10-14T09:02:50.153 回答