Php 如何连接到两个数据库

Php 如何连接到两个数据库,php,mysql,Php,Mysql,我正在尝试连接到两个数据库,为我的两个数据库创建一个搜索引擎。这是一个测试代码。有人能告诉我我做错了什么,或者这是否可能。谢谢 mysql_connect("localhost","user","pass"); mysql_select_db("db1"); mysql_select_db("db2"); $search=mysql_query("SELECT * from db1.repairs, db2.order from db1,db2"); while($row=mysql_fetc

我正在尝试连接到两个数据库,为我的两个数据库创建一个搜索引擎。这是一个测试代码。有人能告诉我我做错了什么,或者这是否可能。谢谢

mysql_connect("localhost","user","pass");
mysql_select_db("db1");
mysql_select_db("db2");

$search=mysql_query("SELECT * from db1.repairs, db2.order from db1,db2");
while($row=mysql_fetch_array($search)){
    echo $row['first_name']."&nbsp;".$row['esn']."&nbsp;".$row['order_type']."<br>";
}
mysql_-connect(“localhost”、“user”、“pass”);
mysql_select_db(“db1”);
mysql_select_db(“db2”);
$search=mysql_query(“SELECT*from db1.repairs,db2.order from db1,db2”);
while($row=mysql\u fetch\u数组($search)){
echo$row['first_name']。.$row['esn']。.$row['order_type']。
; }
返回一个
$resource
。您可以连接两次,然后用每个数据库选择一个数据库(实际上,您可以从连接本身中选择一个数据库),然后使用每个连接

但是,您的问题是您的选择不正确。您试图从数据库的表中选择字段,这是不正确的。事实上,您无法以如此奇特的方式获取两个不同的数据库,因为它们被视为两组独立且不相关的信息。这就是为什么存在表格,以解决这个问题

然而,答案可能有一个解决方案

否则,您可以使用两个
mysql\u connect
和两个资源连接到每个数据库,获取值,然后自己进行交叉。我知道这不是最好的选择,而是一个适合你需要的答案


PS:如果你现在就开始这个项目,切换到Mysqli或PDO。Mysql已弃用。

如果在表名之前指定数据库名,则可以跨数据库进行查询,如下所示

SELECT     a.col1, b.col2 
FROM       db1.table1 AS a
INNER JOIN db2.table2 AS b ON a.someIdFromA = b.someIdFromB
正如Korcholis提到的,问题在于你的选择。如果可以避免,您也不想使用
mysql.*
函数。首选PDO或MySqli

编辑 至少在使用MySQL时是这样。我敢打赌它也适用于大多数其他RDBMS,但我手头上没有其他RDBMS可供测试,我也不能说它是否符合SQL标准。有人评论吗?

您可以使用

<?php
$db1 = mysql_connect("localhost","user","pass");
$db2 = mysql_connect("remote","user","pass");

mysql_select_db("db1", $db1);
mysql_select_db("db1", $db2);

$query1 = mysql_query("USE somedatabase", $db1);
$query2 = mysql_query("USE otherdatabase", $db2);

试着回顾一下,也许你不能通过从
查询
来查询数据库:

<?php
$con1 = mysqli_connect("$hostname", "$user1", "$password1", "$db1");
if (mysqli_connect_errno($con1)) {
    echo mysqli_connect_error();
}

$con2 = mysqli_connect("$hostname", "$user2", "$password2", "$db2");
if (mysqli_connect_errno($con2)) {
    echo mysqli_connect_error();
}

$search1 = mysqli_query($con1, "SELECT * from $db1table");

$search2 = mysqli_query($con2, "SELECT * from $db2table");

/* Other PHP codes here */

mysqli_close($con1);
mysqli_close($con2);
?>


您甚至可以改进此代码,也不能最小化它

如果您的问题已解决,请接受其中一个答案,并对所有有用的答案(包括已接受的答案)进行投票。如果您需要任何额外的澄清,请随意评论答案。我喜欢这个,但我没有测试它,也许,我不愿意,因为这不是正确的方式。。