1

重複の可能性:
1 つの Web ページで複数の MySQL データベースに接続するにはどうすればよいですか?

あるデータベースに接続したい場合は、いくつかのクエリを実行してから、別の DB から別のクエリを実行します。どうすればいいのですか?私はただ

 mysql_pconnect("host:3306", "user", "password") or die(mysql_error());
 mysql_select_db("Test") or die(mysql_error());

//do some query

 mysql_pconnect("host2:3306", "user", "password") or die(mysql_error());
 mysql_select_db("Test") or die(mysql_error());

//do another query

それがあなたのやり方ですか?いくつか質問があります。pconnect を使用したことに注意してください。同じページで 2 回呼び出しても影響はありますか? また、2 番目の接続を呼び出す前に、最初の接続を閉じる必要がありますか?

4

4 に答える 4

4

データベース接続リンクを別の変数に保存する必要があります。例えば

 $connection_1 = mysql_connect("host:3306", "user", "password") or die(mysql_error());
 mysql_select_db("Test", $connection_1) or die(mysql_error());

 $connection_2 = mysql_pconnect("host2:3306", "user", "password") or die(mysql_error());
 mysql_select_db("Test", $connection_2) or die(mysql_error());

 mysql_query("your query", $connection_1); // run query for first connection
 mysql_query("your query", $connection_2); // run query for second connection
于 2009-10-09T15:40:15.943 に答える
1

mysql_connect から返されたリソースを保存し、mysql_select_db を実行するときにそれを使用する必要があります。

$res1 = mysql_pconnect(...);
mysql_select_db("Test", $res1);

$res2 = mysql_pconnect(...);
mysql_select_db("Test", $res2);

次に、対応するデータベースを照会するときに $res1 または $res2 を使用します。

mysql_query("select * from test_table", $res1);

mysql_query("select * from test_table", $res2);
于 2009-10-09T15:41:12.007 に答える
0

$link_identifier?を使用していないため、RTM を実行しました。

http://us.php.net/mysql_select_db :

bool mysql_select_db ( string $database_name [, resource $link_identifier ] )

指定されたリンク識別子に関連付けられているサーバー上の現在アクティブなデータベースを設定します。以降の mysql_query() へのすべての呼び出しは、アクティブなデータベースで行われます。

パラメーター

database_name 選択するデータベースの名前。

link_identifierMySQL 接続。

リンク識別子が指定されていない場合、mysql_connect() によって開かれた最後のリンクが想定されます。そのようなリンクが見つからない場合、引数なしで mysql_connect() が呼び出されたかのようにリンクを作成しようとします。接続が見つからない、または確立されていない場合は、E_WARNING レベルのエラーが生成されます。

pconnect を使用するときはいつでも、接続を共有しています (ページ内だけでなく、おそらく他のページとも)。ここでの場合は、そうしないでください。分離されたリンクが必要なため、分離されたトランザクションが必要です。mysql_connect代わりに、パラメーターを明示的に使用することを検討する必要がありnew_linkます。最後に、$link_identifier明示的に使用して、何に接続しているかを明確にします。

于 2009-10-09T16:02:21.463 に答える
0

それがあなたのやり方ですか?

これにより、スクリプトが終了するまで、異なるホストへの 2 つの接続が開いたままになります。

もう一度呼び出すことで、これらの接続のいずれかを再利用できますmysql_pconnect

を使用したことに注意pconnectしてください。同じページで 2 回呼び出すことに影響しますか?

ドキュメントから:

関数は最初に、同じホスト、ユーザー名、およびパスワードで既に開いている (永続的な) リンクを見つけようとします。

ホストが異なるため、2 つの異なる接続が存在します。

また、2 番目の接続を呼び出す前に、最初の接続を閉じる必要がありますか?

で開いている接続を明示的に閉じることはできませんmysql_pconnect

于 2009-10-09T15:44:25.477 に答える