如何在PHP中构造跨数据库查询?
在上一集中(如何在MySQL中构建跨数据库查询),我学习了如何在MySQL中构建跨数据库查询。这很好用,但是当我们的英雄尝试在PHP中使用这种新发现的知识时,他发现了他最好的朋友FAIL在等他。
我看了看mysql_select_db
PHP。这似乎暗示着,如果我想将MySQL与PHP结合使用,我有两种选择:
使用,
mysql_select_db
但是每次只能使用一个数据库。这是我们当前的设置,将数据库作为名称空间标识符似乎不起作用(它在MySQL Shell中运行良好,因此我知道这与我们的MySQL服务器设置无关)。不要使用
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