ホームページ  >  記事  >  データベース  >  同じホスト上の複数のデータベースに対して PHP でクロスデータベース クエリを実行するにはどうすればよいですか?

同じホスト上の複数のデータベースに対して PHP でクロスデータベース クエリを実行するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-10 20:28:03542ブラウズ

How can I perform cross database queries in PHP with multiple databases on the same host?

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

前の記事では、MySQL でのクロス データベース クエリの構築について説明しました。このアプローチは MySQL では効果的に機能しましたが、PHP に直接適用するのは困難であることが判明しました。具体的には、PHP で mysql_select_db を使用すると、複数のデータベースにアクセスしようとするときに制限が生じます。

gt;オプションと制限事項

PHP で mysql_select_db を使用するときに使用できる 2 つの主なオプション

  1. 単一データベースへのアクセスを制限し、データベース間のクエリを防止します。
  2. クエリごとにデータベースを指定する必要がある 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
");

$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 サイトの他の関連記事を参照してください。

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