-1

2 つのデータベースに接続して、いくつかのデータベース用の検索エンジンを作成しようとしています。ここにテストコードがあります。誰かが私が間違っていることを教えてもらえますか、それが可能かどうか教えてください。ありがとう。

mysql_connect("localhost","user","pass");
mysql_select_db("db1");
mysql_select_db("db2");

$search=mysql_query("SELECT * from db1.repairs, db2.order from db1,db2");
while($row=mysql_fetch_array($search)){
    echo $row['first_name']."&nbsp;".$row['esn']."&nbsp;".$row['order_type']."<br>";
}
4

4 に答える 4

1

このようにテーブル名の前にデータベース名を指定すると、データベース全体でクエリを実行できます

SELECT     a.col1, b.col2 
FROM       db1.table1 AS a
INNER JOIN db2.table2 AS b ON a.someIdFromA = b.someIdFromB

Korcholis が言及しているように、問題はあなたの選択にあります。mysql_*また、回避できる場合は、関数を使用したくありません。PDO または MySqli が推奨されます。

編集 少なくともこれはMySQLを使用して機能します。他のほとんどの RDBMS でも同様に機能すると思いますが、テストするのに便利なものは他になく、これが SQL 標準に準拠しているかどうかはわかりません。誰かコメントしますか?

于 2013-04-04T19:51:07.080 に答える
0

mysql_connectを返します$resource。2 回接続して、それぞれでデータベースを選択し (実際には、接続自体からデータベースを選択できます)、各接続を使用できます。

ただし、問題は SELECT が正しくないことです。データベースのテーブルからフィールドを選択しようとしていますが、これは正しくありません。実際、2 つの異なるデータベースは、独立した 2 つの情報セットと見なされ、それらの間で無関係であると見なされるため、それほど派手な方法でフェッチすることはできません。そのため、その問題に合わせてテーブルが存在します。

ただし、この他の回答には解決策がある場合があります。

それ以外の場合は、2 つまたは 2 つのリソースを使用して各データベースに接続しmysql_connect、値を取得して自分で交差させることができます。最善の選択肢ではないことはわかっていますが、あなたのニーズに合った答えです。

PS: プロジェクトを今すぐ開始する場合は、Mysqli または PDO に切り替えてください。Mysql は非推奨です。

于 2013-04-04T19:38:20.847 に答える