前の記事では、MySQL でのクロス データベース クエリの構築について説明しました。このアプローチは MySQL では効果的に機能しましたが、PHP に直接適用するのは困難であることが判明しました。具体的には、PHP で mysql_select_db を使用すると、複数のデータベースにアクセスしようとするときに制限が生じます。
PHP で mysql_select_db を使用するときに使用できる 2 つの主なオプション
これらのオプションはいずれも、既存のコードに手間のかかる変更を加えずにクロスデータベース クエリを実行するという目標とは一致しません。
この問題に対処するには、次のようにします。データベースは同じホスト上に存在する必要があります。これにより、優先するデフォルト データベースへの接続を維持しながら、外部データベースを手動で指定できます。
$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 サイトの他の関連記事を参照してください。