【问题标题】:handling two mysql connection in PHP在 PHP 中处理两个 mysql 连接
【发布时间】:2009-08-14 15:59:16
【问题描述】:

对于一个项目,我需要打开一个 Mysql 连接,关闭它,然后让旧的遗留代码运行。遗留代码有自己的连接,只需调用 mysql_query($sql) 而不带资源参数。

我该如何处理?我可以将 Mysql 连接设置为全局连接吗?我必须重新执行 mysql_connect() 语句吗?遗留代码现在不能重构。

这里有一个简短的演示

<?php

function show()
{
    $a = mysql_fetch_array(mysql_query('select database()'));
    echo $a[0] . "<br>";
}

$conn = mysql_connect('localhost', 'root', '', TRUE);
mysql_select_db('dredd');
show();

mysql_connect('localhost', 'root', '', TRUE);
mysql_select_db('afup');
show();
mysql_close();

$a = mysql_fetch_array(mysql_query('select database()', $conn));
echo $a[0] . "<br>";

show();

第一个选择没问题,第二个,第三个没问题,因为它有资源,但第四个坏了(“用户'ODBC'@'localhost'的访问被拒绝(使用密码:NO)”)。

问候,塞德里克

【问题讨论】:

    标签: php mysql database-connection


    【解决方案1】:

    如果你不指定连接,它将使用最后创建的连接,所以如果你先关闭另一个连接应该没问题,例如

    //open your db connection
    $conn1 = mysql_connect();
    mysql_query($sql, $conn1);
    mysql_close($conn1);
    
    //open legacy code's db connection
    $conn = mysql_connect();
    //run legacy code
    

    如果您遇到问题,使用 PDO 或 mysqli 进行第二次连接可能会更容易,因为您知道它们肯定是分开的,无需修改旧代码。

    【讨论】:

    • 我的数据库连接是为了一个错误追赶系统,所以遗留代码被中断,我的代码运行,遗留代码继续。不过你的想法很好,谢谢!我尽快试试看。
    猜你喜欢
    • 2010-12-26
    • 2015-12-07
    • 1970-01-01
    • 2021-10-16
    • 1970-01-01
    • 2015-12-16
    • 2012-04-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多