ホームページ >データベース >mysql チュートリアル >PHP でクロスデータベースクエリを実行するにはどうすればよいですか?

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

Barbara Streisand
Barbara Streisandオリジナル
2024-11-11 14:48:03199ブラウズ

How to Execute Cross Database Queries in PHP?

PHP でのクロス データベース クエリ: 障壁の突破

前のエピソードでは、MySQL でのクロス データベース クエリの構築が可能になりました。ただし、この知識を PHP に変換すると、mysql_select_db の制限により障害が発生しました。

オプションと制限

PHP で使用できるオプションは次のとおりです。

  • Use mysql_select_db: 使用をセッションごとに 1 つのデータベースに制限します。データベース間の参照を使用しようとすると失敗します。
  • mysql_select_db: は避けてください。クエリごとにデータベースを指定する必要がありますが、これは面倒で非現実的です。

解決策

これらの制限を克服し、PHP でデータベース間クエリを実行するには、次の方法を活用できます。

$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 でクロスデータベースクエリを実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。