gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 18:35:45 24 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) 这样疯狂的事情?

澄清:所提出的答案实际上都没有让我进行跨数据库查询。相反,它们允许我分别访问两个不同的数据库。我想要一个解决方案,允许我执行类似 SELECTforeign_db.login.username,firstname,lastname fromforeign_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/45314103/

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