php - 与数据库服务器建立动态连接

标签 php mysql database

我从一位 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/

相关文章:

php - mb_substr 和 substr 的区别

php - 使用 AJAX (Javascript) 将查询传递到函数中

mysql - 如何选择一个字段在多个字段中的行

java - 将 HashMap 发送到 SQL DB

database - 使用 codeigniter 编辑现有 pdf 文件并通过电子邮件发送到此编辑 pdf 文件

mysql - 选择数据库

php - 使用 PHP 解析自定义标签

javascript - 将变量从 PHP 传递到 AJAX 成功函数

php - MYSQL 从带有分号的 html 文本区域插入字符串...建议?

mysql - 优化查询