我被指派维护史前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
参数。
现在问题是,$query
在数据库2上运行,因为它已经重写了之前的连接。
可以使用true
作为mysql_connect
中的第四个参数来解决此问题。问题是,我宁愿不重写12年历史的库中的东西(因为纯粹担心它会如何在实时服务器上做出反应),而且它在没有第四个参数的情况下也可以在实时服务器上运行。但是,我不是服务器大师,我无法在服务器配置中找到正确的指令来打开我的本地MAMP配置,更接近于模拟实时环境。
任何人都可以帮助我吗?谢谢。
编辑:包装器本身:
phpDB.php - db wrapper - http://scrp.at/wd
phpDB-mysql.php - mysql特定代码 - http://scrp.at/we
答案 0 :(得分:2)
解决此问题的方法是修改query
方法。
其中的某个地方正在呼叫mysql_query()
。您所要做的就是添加第二个参数,其中包含对包含MySQL连接引用的内部变量的引用。
这是猜测,因为你没有发布任何代码,但我想你会看到这样的东西:
<强>旧强>
function query($thequery) {
mysql_query($thequery);
....
}
将其更改为
function query($thequery) {
mysql_query($thequery, $this->dbreference);
....
}
无论你的班级有什么“dbreference”,我都不知道。查找调用mysql_connect
时设置的任何变量。
答案 1 :(得分: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