连接多个数据库并在php中跨数据库连接查询

时间:2012-01-17 14:01:25

标签: php mysql database

使用php我想在2个数据库中建立连接查询。

这是我的第一次联系。

$conn = mysql_connect('localhost','root1','pass1'); 
@mysql_select_db('database1',$conn);

这是我的第二次联系。

$conn1 = mysql_connect('localhost','root2','pass2'); 
@mysql_select_db('database2',$conn1);

如果我想从database1获取数据,我正在做以下事情。

$sql = 'SELECT * FROM users';

$result = mysql_query($sql, $conn);

print_r(mysql_fetch_array($result));

同样适用于第二个数据库2

$sql = 'SELECT * FROM orders';

$result = mysql_query($sql, $conn1);

print_r(mysql_fetch_array($result));

但是当我按照以下方式进行联接查询时,我遇到了问题

$sql = 'SELECT a.fname AS fname, a.lname AS lname FROM database1.users a JOIN database2.orders b ON b.creator_id = a.id';

$result = mysql_query($sql);//what should be second parameter over here.

print_r(mysql_fetch_array($result));

2 个答案:

答案 0 :(得分:5)

您可以通过在表名前加上数据库名称来执行此操作,就像您在示例中提到的那样。但是登录用户需要在相同凭据下访问这两个数据库。最后一部分非常重要,否则你将无法做到。

这为您提供了一个简单但直截了当的示例:link

从该链接获取的示例(仅使用相同的凭据):

SELECT
    c.customer_name,
    o.order_date
FROM
    db1.tbl_customers c LEFT JOIN
    db2.tbl_orders o ON o.customer_id = c.id

答案 1 :(得分:0)

php环境中的mysql模块不支持多个数据库连接,此外,此模块仅出于反向兼容的原因而存在。你不应该使用它。

mysqliPDO更好,更完整(这些支持事务和准备好的声明," mysql"不要),PDO也支持多db查询。

旧的mysql只是程序性的,mysqli可用于程序和OO编程,PDO是OOP。