0

異なるデータベースにある2つの異なるフィールドを取得したいと思います。私のデータベース接続設定は次のとおりです。

 define ('DB_HOST',     'ipaddress1');
 define ('DB_USER',     'username1');
 define ('DB_PASSWORD', 'password1');
 define ('DB_DATABASE', 'ecbooks');
 $db_wink = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD, TRUE) or  die("Connection Error: " . mysql_error());
 mysql_select_db(DB_DATABASE) or die("Error connecting to Winkstore DB. " . mysql_error());

 // DB configuration parameters : magonwink
 define ('DB_REMOTE_HOST',     'ipaddress2');
 define ('DB_REMOTE_USER',     'username2');
 define ('DB_REMOTE_PASSWORD', 'password2');
 define ('DB_REMOTE_DATABASE', 'magsonwink');

 $db_magson = mysql_connect(DB_REMOTE_HOST, DB_REMOTE_USER,  DB_REMOTE_PASSWORD, TRUE) or die("Connection Error: " . mysql_error());
 mysql_select_db(DB_REMOTE_DATABASE, $db_magson) or die("Error connecting to magson wink DB. " . mysql_error());

 define ('CMS_DB_HOST',     'ipaddress3');
 define ('CMS_DB_USER',     'username3');
 define ('CMS_DB_PASSWORD', 'password3');
 define ('CMS_DB_DATABASE', 'mawinkcms');

 $db_rp = mysql_connect(CMS_DB_HOST, CMS_DB_USER, CMS_DB_PASSWORD, true) or die("Connection Error: " . mysql_error());
 mysql_select_db(CMS_DB_DATABASE, $db_rp) or die("Error connecting to DB. " . mysql_error());

しかし、私がこのクエリを使用したとき

 SELECT ecbooks.user.user_name AS field1, mawinkcms.purchase.USER_NAME AS field2 FROM ecbooks.user,mawinkcms.purchase
 $result     = mysql_query($query, $db_wink) or die("Couldn't execute query: " . mysql_error());
 while($row = mysql_fetch_assoc($result)){
 $users[] = $row;
 }

クエリを実行できませんでしたというエラーが発生しました。前もって感謝します。

4

2 に答える 2

1

2 番目のパラメータとして正しいリンク識別子をmysql_query関数に渡す必要があります: http://www.php.net/mysql_query

$ecbooks存在しません(提供したコードに基づく)。

あなたの場合、アクセスしたいテーブルがecbooksデータベースにある場合は、に渡す必要があり$db_winkますmysql_query

ただし、同じクエリで 2 つの異なるデータベースにアクセスしようとしているため、両方のデータベースにアクセスできるユーザーでデータベースに接続する必要があります。発生した実際のエラーを投稿することも役立ちます。

ps: この拡張機能を使用して MySQL にアクセスするのはやめてください。詳しくはこちらをご覧ください。

于 2012-11-19T12:13:02.017 に答える
0

まず、エラーについて助けを求めるときは、エラー自体を含めることをお勧めします。

第 2 に、クエリに結合条件がないように見えるため、取得するとデカルト積が返されます。これは、おそらく望んでいるものではありません。

第 3 に、クエリを実行すると、他のデータベースに接続したかどうかに関係なく、接続したデータベースに対してクエリが実行されます。したがって、あなたの例では、$db_wink; に対してクエリを実行しています。他の 2 つの接続はこれにまったく影響しません。

クエリが機能するには、$db_wink に接続したユーザーがデータベース ecbooks および mawinkcms に対する権限を持っている必要があり、mawinkcms は ecbooks と同じサーバーで実行されている必要があります。

アクセス許可が設定されていないか、別のデータベースで実行していると思います。

于 2012-11-19T12:34:39.393 に答える