php - 如何在单个网页上连接多个MySQL数据库?
我将信息分散在几个数据库中,并希望使用PHP将所有信息放到一个网页上。 我想知道如何连接到单个PHP网页上的多个数据库。
我知道如何使用以下方法连接到单个数据库:
$dbh = mysql_connect($hostname, $username, $password)
or die("Unable to connect to MySQL");
但是,我可以使用多个“mysql_connect”命令来打开其他数据库,如果我连接了多个数据库,那么PHP如何知道我希望从中获取信息的数据库。
JoshFinnie asked 2019-04-09T05:23:13Z
11个解决方案
320 votes
您可以多次调用SELECT * FROM database2.tablename,但如果参数相同,则需要为'$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);
如果您没有传递链接标识符,则使用最后创建的连接(在本例中为SELECT * FROM database2.tablename表示的连接),例如:
mysql_query('select * from tablename');
其他选择
如果MySQL用户可以访问两个数据库并且它们位于同一主机上(即两个数据库都可以从同一个连接访问),您可以:
保持一个连接打开,并根据需要调用SELECT * FROM database2.tablename进行交换。 我不确定这是一个干净的解决方案,你最终可能会查询错误的数据库。
在查询中引用表时指定数据库名称(例如SELECT * FROM database2.tablename)。 实施这可能是一种痛苦。
另请阅读troelskn的答案,因为如果您能够使用PDO而不是旧的扩展,这是一种更好的方法。
Tom Haigh answered 2019-04-09T05:24:17Z
92 votes
如果您使用PHP5(并且您应该,因为PHP4已被弃用),您应该使用PDO,因为这正逐渐成为新标准。