使用php的多个mysql数据库

时间:2011-12-11 09:09:17

标签: php mysql

我知道如何使用作为第四个参数的链接标识符给出的true参数连接两个数据库。 但如果有两个以上的数据库。我能做些什么呢?

3 个答案:

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