0

我们在脚本的开头打开一个到host_1的 MySQL 连接。介于两者之间,我们调用一个函数来打开和关闭与 host_2 的连接函数 retrieve_information_from_host_2)。

不幸的是,函数调用之后的代码仍然使用函数的连接host_2)。

我们需要它来继续前面的连接host_1 。

<?php

function retrieve_information_from_host_2($host_2, $username_2, $password_2, $database_2) {
    $connection = mysql_connect($host_2, $username_2, $password_2);
    if($connection) {
        if(mysql_select_db($database_2)) {
            $sql = "SELECT * FROM table WHERE id = 1;";
            $erg = mysql_query($sql);
            $row = mysql_fetch_assoc($erg);

            return $row;
        }
        mysql_close($connection);
    }
}

if(mysql_connect($host_1, $username_1, $password_1)) {
    if(mysql_select_db($database_1)) {
        $sql = "SELECT * FROM table WHERE id = 1;";
        $erg = mysql_query($sql);
        $row = mysql_fetch_assoc($erg); # CORRECT - This returns data from host 1

        $row_host_2 = retrieve_information_from_host_2(); # CORRECT - This returns data from host 2

        $sql = "SELECT * FROM table WHERE id = 2;";
        $erg = mysql_query($sql);
        $row = mysql_fetch_assoc($erg); # WRONG - This returns data from host 2 instead of host 1
    }
    mysql_close();
}
?>

我们通过给每个连接命名来尝试了几乎所有组合

$connection_1 = mysql_connect($host_1, $username_1, $password_1);
...
mysql_close($connection_1);

并明确关闭它们等。

没有什么帮助。有人可以给我们解决这个问题的方法吗?

PS:我们绑定到这种方法(函数),不能使用类。

非常感谢!

4

2 回答 2

4

有关第二个参数 link_identifier(MySQL 连接),请参阅mysql_query手册

如果未指定链接标识符,则假定由 mysql_connect() 打开的最后一个链接。

您还应该使用 mysqli 而不是旧的 mysql。

于 2012-10-19T17:06:10.523 回答
0

尝试将您的连接链接标识符作为第二个参数传递。

例如:

$connection1 = mysql_connect($host_1, $username_1, $password_1);
$connection2 = mysql_connect($host_2, $username_2, $password_2);
mysql_query('Query',$connection1);
mysql_query('Query',$connection2);
于 2012-10-19T17:00:52.433 回答