php - PHP 函数中的 MySQL 连接会覆盖现有连接(其他数据库)——如何防止这种情况发生?

标签 php mysql mysql-connect

我们在脚本的开头打开了一个到 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:我们受限于这种方法(函数),不能使用类。

非常感谢!

最佳答案

请参阅 mysql_query 的手册对于第二个参数link_identifier(MySQL连接)

If the link identifier is not specified, the last link opened by mysql_connect() is assumed.

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

关于php - PHP 函数中的 MySQL 连接会覆盖现有连接(其他数据库)——如何防止这种情况发生?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12978920/

相关文章:

mysql - Slick 3 MySQL RAND() 和更新

mysql - 产品过滤器 Node js + sequelize

php - 奇怪而烦人的错误 : Call to undefined function mysql_query()

mysql - 如何为 Mac OS X(使用终端)安装 MySQL Connector C++?

PHP - 如何让 mysqli_connect() 返回资源,以便它可以与 Define() 一起使用

javascript - Php Counter 在加载后隐藏逗号并且不会永久显示

javascript - 通过脚本/小部件分析数据

mysql - 这将是什么简单的 mysql 查询

php - 如何使用 Ajax 和 PHP 更新 MySQL 字段

javascript - [对象 HTMLTablerowElement]