PHP でクロスデータベースクエリを実行するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-11-15 07:04:02
オリジナル
383 人が閲覧しました

How to Perform Cross Database Queries in PHP?

PHP でのクロス データベース クエリ

前の説明では、MySQL でのクロス データベース クエリについて説明しました。しかし、この知識を PHP で実装しようとすると、課題が生じました。

問題:

PHP は、mysql_select_db を使用した 2 つのアプローチを提供します:

  1. mysql_select_db を使用すると、一度に 1 つのデータベースへのアクセスが制限されます。
  2. mysql_select_db を省略すると、各クエリでデータベースを指定する必要があり、不便で非現実的です。

解決策:

過度の変更を加えずに PHP でデータベース間のクエリを実行するには、次の手順を実行できます。

  1. データベースが同じホスト上に存在することを確認します。
  2. mysql_select_db を使用して、優先データベースへの接続を確立します。
  3. 以下に示すように、クエリで外部データベースを手動で指定します。
$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
");
ログイン後にコピー

データベースが異なるホスト上にある場合、直接結合はできません。その場合、代わりに 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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート