我知道如何使用作为第四个参数的链接标识符给出的true参数连接两个数据库。 但如果有两个以上的数据库。我能做些什么呢?
答案 0 :(得分:2)
您可以多次拨打
mysql_connect()
$dbh1 = mysql_connect($hostname, $username, $password); $dbh2 = mysql_connect($hostname, $username, $password, true); mysql_select_db('database1', $dbh1); mysql_select_db('database2', $dbh2);
答案 1 :(得分:0)
您可以对mysql_connect()
进行多次调用,但如果参数相同,则需要为“$new_link
”(第四个)参数传递true,否则将重复使用相同的连接。
所以你有
$dbh1 = mysql_connect($hostname, $username, $password);
$dbh2 = mysql_connect($hostname, $username, $password, true);
mysql_select_db('database1', $dbh1);
mysql_select_db('database2', $dbh2);
然后查询数据库1,执行
mysql_query('select * from tablename', $dbh1);
和数据库2
mysql_query('select * from tablename', $dbh2);
或者,如果mysql用户可以访问两个数据库并且它们位于同一主机上(即两个数据库都可以从同一个MySQL连接访问),那么您可以:
mysql_select_db()
进行交换。我不认为这是一个干净的解决方案,你很容易得到你查询错误的数据库等的情况。SELECT * FROM database2.tablename
),但这可能很难实现。答案 2 :(得分:0)
使用作为链接标识符给出的true参数作为第四个参数
...只有当两个(或所有)数据库都在同一个mysql实例上运行且使用相同的用户名和密码才能连接 - 如果你已经有理由将内容拆分到不同的数据库中,然后通常也有理由将认证分开。
如果身份验证没有被拆分(甚至有时它被拆分)你不需要2个不同的句柄来访问同一个实例上的数据:
SELECT a.*, b.*
FROM db_1.a_table a
INNER JOIN db_2.a_table b
ON (a.id=b.id)