首頁 >資料庫 >mysql教程 >如何在PHP中執行跨資料庫查詢?

如何在PHP中執行跨資料庫查詢?

Patricia Arquette
Patricia Arquette原創
2024-11-10 12:42:02286瀏覽

How to Perform Cross-Database Queries in PHP?

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn