PHP 中的跨数据库查询:综合指南
本文解决了在 PHP 中构造跨数据库查询的问题,这是一个问题这是之前在 MySQL 环境中探索过的。尽管在 MySQL 中成功实现了跨数据库查询,但作者在尝试在 PHP 中复制该过程时却遇到了失败。
具体来说,作者质疑 mysql_select_db 一次只能使用一个数据库的限制,使得跨数据库查询不切实际。此外,为每个查询指定数据库的替代方案被认为是乏味的。
PHP 中的跨数据库查询
克服了 mysql_select_db 的限制,作者得到了一个解决方案启用直接跨数据库连接:
$db = mysql_connect($host, $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 ");
在此示例中,mysql_select_db 中指定的数据库成为脚本的默认数据库。但是,查询可以通过使用适当的数据库名称手动引用不同数据库的表来指定它们,如 another_db.table_on_another_db 所示。
不同主机的替代方法
如果数据库驻留在不同的主机上,则直接连接变得不可能。相反,建议使用双查询方法:
$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);
此方法涉及进行两个单独的查询:每个数据库一个。第一个查询检索第一个数据库中满足条件的记录的 ID。然后,这些 id 用作第二个查询的过滤器,该查询从第二个数据库中获取相应的记录。
以上是如何在PHP中执行跨数据库查询?的详细内容。更多信息请关注PHP中文网其他相关文章!