gpt4 book ai didi

php - 如何在 PHP 中构建跨数据库查询?

转载 作者:IT王子 更新时间:2023-10-28 23:46:04 25 4
gpt4 key购买 nike

在我们的上一集 (How I constructed a cross database query in MySQL) 中,我学习了如何在 MySQL 中构建跨数据库查询。这非常有效,但是当我们的英雄试图在 PHP 中使用这些新发现的知识时,他发现他最好的 friend 在等他时失败了。

我查看了 PHP 的 mysql_select_db。这似乎意味着如果我想将 MySQL 与 PHP 一起使用,我有几个选择:

  1. 使用 mysql_select_db 但一次只能使用一个数据库。这是我们当前的设置,将数据库作为命名空间标识符似乎不起作用(它在 MySQL shell 中工作正常,所以我知道这不是我们的 MySQL 服务器设置的问题)。

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

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

澄清:所提出的答案实际上都没有让我进行跨数据库查询。相反,它们允许我分别访问两个不同的数据库。我想要一个解决方案,允许我执行类似 SELECT foreign_db.login.username, firstname, lastname from foreign_db.login, user where ... 的解决方案,而不仅仅是对不同的数据库进行不同的查询。对于它的值(value),(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 - 如何在 PHP 中构建跨数据库查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1999235/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com