LAMP设置 - PHP和多个数据库连接与mysql_connect()

时间:2011-02-15 14:47:48

标签: php mysql lamp mysql-connect

我被指派维护史前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

2 个答案:

答案 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