我从一位 friend 那里收到了一个现成的虚拟航类预订系统,我正在使用它,它基于 1 个用户名和密码下的 2 个数据库。
我的主机的问题是为每个数据库生成唯一的主机、用户名和密码。这个系统的好处是所有连接脚本都在一个文件中,我已经修改了大部分部分但我坚持主要部分;函数 change_db。
首先是mysqlexec代码:
<?php
$ini = parse_ini_file("data.ini.php");
$host_rfe = $ini["host_rfe"];
$host_nav = $ini["host_nav"];
$rfedatabase = $ini["rfedatabase"];
$navdatabase = $ini["navdatabase"];
$login_db_rfe = $ini["login_db_rfe"];
$pass_db_rfe = $ini["pass_db_rfe"];
$login_db_nav = $ini["login_db_nav"];
$pass_db_nav = $ini["pass_db_nav"];
$port = $ini["port"];
// Connecting to Database
if(!($sqlconn=@mysql_connect("$host_rfe:$port",$login_db_rfe,$pass_db_rfe))) {
echo "<p align=\"center\"><big><img src=\"images/redx.png\"><br/><strong>It wasn't possible to connect to MySQL server. Please, check the configurations.</strong></big></p>";
exit;
}
// Select Database
if(!($con=@mysql_select_db($rfedatabase,$sqlconn))) {
echo "<p align=\"center\"><big><img src=\"images/redx.png\"><br/><strong>It wasn't possible to connect to database <i>$rfedatabase</i>. Please, check the configurations.</strong></big></p>";
exit;
}
/*========================================================================
Function: change_db
Usage: This function changes the pointer to another MySQL Database
Arguments:
$sqlconn - Connection pointer
$db - Destnation's database
========================================================================*/
function change_db($sqlconn,$db) {
global $sqlconn;
if(!($con=mysql_select_db($db,$sqlconn))) {
echo "<p align=\"center\"><big><img src=\"images/redx.png\"><br/><strong>It wasn't possible to connect to database <i>$db</i>. Please, check the configurations.</strong></big></p>";
exit;
}
return $con;
}
?>
系统将需要始终连接到两个数据库,具体取决于功能。最初是与 $rfedatabase 建立连接,然后需要切换到 $rfedatabase,然后可能会返回到第一个,依此类推。为了进行数据库交换,系统使用函数 change_db。示例:
change_db($sqlconn,$navdatabase);
--some functions--
change_db($sqlconn,$rfedatabase);
--some functions--
global $sqlconn; 的问题来了。连接将始终连接到 $rfedatabase 主机,不会切换到另一个主机。
我已经用这段代码改变了 global $sqlconn; 但没有起作用:
if($db == $rfedatabase){
$sqlconn=mysql_connect("$host_rfe:$port",$login_db_rfe,$pass_db_rfe);
exit;
} else {
$sqlconn=mysql_connect("$host_nav:$port",$login_db_nav,$pass_db_nav);
exit;
}
知道如何建立与所需数据库相关的连接吗?
最佳答案
好吧,我发现了问题,我只是忘了对我的全局变量执行 SQL 指针。
global $rfedatabase, $navdatabase, $host_rfe, $host_nav, $port, $login_db_rfe, $pass_db_rfe, $login_db_nav, $pass_db_nav;
if($db == $rfedatabase){
$sqlconn=mysql_connect("$host_rfe:$port",$login_db_rfe,$pass_db_rfe);
} else {
$sqlconn=mysql_connect("$host_nav:$port",$login_db_nav,$pass_db_nav);
}
关于php - 与数据库服务器建立动态连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36737183/