如何连接到两个数据库

时间:2013-04-04 19:32:34

标签: 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_fetch_array($search)){
    echo $row['first_name']."&nbsp;".$row['esn']."&nbsp;".$row['order_type']."<br>";
}

4 个答案:

答案 0 :(得分:1)

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

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,但我没有其他方便测试,我不能说这是否符合SQL标准。评论任何人?

答案 1 :(得分:1)

您可以使用

<?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);

或尝试使用在不同实例中处理这些连接的类 http://www.joni2back.com.ar/programacion/php-class-for-mysql-databases/

答案 2 :(得分:0)

mysql_connect返回$resource。您可以连接两次并选择每个数据库(实际上,您可以从连接本身中选择一个数据库),然后使用每个连接。

但是,您的问题是您的SELECT不正确。您正在尝试从数据库中的表中选择字段,这是不正确的。实际上,您无法以如此奇特的方式获取两个不同的数据库,因为它们被认为是两组独立且不相关的信息。这就是表存在的原因,以适应这个问题。

然而,

This other回答可能有解决方案。

否则,您可以使用两个mysql_connect和两个资源连接到每个数据库,获取值并自己交叉。我知道,这不是最佳选择,但可以满足您的需求。

PS:如果您现在正在开始项目,请切换到Mysqli或PDO。不推荐使用Mysql。

答案 3 :(得分:0)

尝试查看此内容,也许您无法通过查询FROM来查询数据库:

<?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);
?>

您甚至可以改进此代码,也不会将其最小化!