如何在PHP中构造跨数据库查询?

在上一集中(如何在MySQL中构建跨数据库查询),我学习了如何在MySQL中构建跨数据库查询。这很好用,但是当我们的英雄尝试在PHP中使用这种新发现的知识时,他发现了他最好的朋友FAIL在等他。

我看了看mysql_select_dbPHP。这似乎暗示着,如果我想将MySQL与PHP结合使用,我有两种选择:

  1. 使用,mysql_select_db但是每次只能使用一个数据库。这是我们当前的设置,将数据库作为名称空间标识符似乎不起作用(它在MySQL Shell中运行良好,因此我知道这与我们的MySQL服务器设置无关)。

  2. 不要使用mysql_select_db。从我看到的一些示例中,这似乎意味着我必须为我进行的每个查询指定数据库。这是有道理的,因为我还不习惯mysql_select_db告诉PHP我想访问什么数据库。这也让我很难过,因为我不想遍历所有代码并为每个查询添加一个数据库名称。

有什么比这更好的了吗?有没有一种方法可以让我在PHP中执行跨数据库MySQL查询,而不必像(2)那样疯狂呢?

:提出的答案中没有一个实际上允许我执行跨数据库查询。相反,它们允许我分别访问两个不同的DB。我想要一个解决方案,使我能够做一些事情,而SELECT

foreign_db.login.username, firstname, lastname from foreign_db.login, user

where ...不仅仅是对不同的数据库进行不同的查询。对于它的价值,(2)对我不起作用。

回答:

您将需要数据库在同一主机上运行。

如果是这样,您应该能够在夹/默认数据库上使用mysql_select_db并手动指定外部数据库。

$db = mysql_connect($hots, $user, $password);

mysql_select_db('my_most_used_db', $db);

$q = mysql_query("

SELECT *

FROM table_on_default_db a, `another_db`.`table_on_another_db` b

WHERE a.id = b.fk_id

");

如果您的数据库在其他主机上运行,​​则将无法直接加入。但是您可以进行2个查询。

$db1 = mysql_connect($host1, $user1, $password1);

$db2 = mysql_connect($host2, $user2, $password2);

$q1 = mysql_query("

SELECT id

FROM table

WHERE [..your criteria for db1 here..]

", $db1);

$tmp = array();

while($val = mysql_fetch_array($q1))

$tmp[] = $val['id'];

$q2 = mysql_query("

SELECT *

FROM table2

WHERE fk_id in (".implode(', ', $tmp).")

", $db2);

以上是 如何在PHP中构造跨数据库查询? 的全部内容, 来源链接: utcz.com/qa/400003.html

回到顶部