0

我被指派维护史前 PHP 应用程序,它使用由 Joe Thong 编写的一些“phpDB”类,最后一次更新是在 1999 年。这个应用程序连接到同一台服务器上的两个不同数据库,从一个服务器获取一些数据,另一个从第二个服务器获取一些数据。

现在,限制mysql_connect是,它为新连接使用相同的连接资源。因此,如果我使用以下代码:

$db1 = new phpDB()->connect(/* db1data, database 'one' */);
$db2 = new phpDB()->connect(/* db2data, database 'one' */);
$data = $db1->query($somequery); 

编辑注意: new phbDB()->connect只设置一些内部值,并在mysql_connect没有$new_link参数的情况下执行标准。

现在,问题是,它在数据库 2$query上运行,因为它已经重写了以前的连接。

这可以通过使用true作为第四个参数来解决mysql_connect。问题是,我宁愿不在12 岁的库中重写某些东西(因为纯粹担心它会在实时服务器上做出反应),而且它在没有第四个参数的情况下在实时服务器上也能工作。但是,我不是服务器专家,我无法在服务器配置中找到正确的指令来打开我的本地 MAMP 配置,以更接近于模拟实时环境。

谁能帮我?谢谢你。

编辑:包装器本身:
phpDB.php – db 包装器http://scrp.at/wd
phpDB-mysql.php – mysql 特定代码http://scrp.at/we

4

2 回答 2

2

解决此问题的方法是修改该query方法。

它里面的某个地方在呼唤mysql_query()。您所要做的就是添加第二个参数,其中包括对包含 MySQL 连接引用的内部变量的引用。

这是推测,因为您尚未发布任何代码,但我认为您会看到如下内容:

老的

function query($thequery) {
    mysql_query($thequery);
    ....
}

改成这个

function query($thequery) {
    mysql_query($thequery, $this->dbreference);
    ....
}

无论您的课程中调用了什么“dbreference”,我都不知道。查找调用时设置的任何变量mysql_connect

于 2011-02-15T15:12:28.707 回答
1

请查看以下页面:

http://nl.php.net/manual/en/function.mysql-connect.php

http://nl.php.net/manual/en/function.mysql-query.php

通过填写 new_link 参数,您可以添加新连接。

例如:

$link = mysql_connect('localhost', 'mysql_user', 'mysql_password', 'link1');
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password', 'link2');

mysql_query($query, 'link1'); //query on database 1
mysql_query($query, 'link2'); //query on database 2
于 2011-02-15T14:52:50.493 回答