0

エラーが発生し(実際にはエラーではなく、正しく機能していません)、SQL接続に関連しているかどうかを調べようとしています。2つのまったく異なるデータベースへの2つの別々の接続があります。

$dshost = "kjbkb";
$dsdatabase = "kjhk";
$dsusername = "hjgfytdf";
$dspassword = "jhv";
mysql_connect($dshost,$dsusername,$dspassword);
mysql_select_db($dsdatabase) or die( "Unable to select database");

$sql = "SELECT * FROM users WHERE `username` = '".$_POST['paydl']."'";
$cheeseburger = mysql_query($sql);
$res = mysql_fetch_array($cheeseburger);
$autobus_user = $res['id'];

mysql_close(); //close first connection

$db_host = "khgv";
$db_user = "trdstx";
$db_password = "txz";
$db_database = "gfxx";
mysql_connect($db_host, $db_user, $db_password) or die("Unable to connect to host");
mysql_select_db($db_database) or die( "Unable to select database");

$ASDFASDF = "SELECT * FROM `autobus` WHERE `user_id` = '".$autobus_user."' LIMIT 3";
$BobDoleDontNeedThis = mysql_query($ASDFASDF);
$resnumbatwo = mysql_fetch_array($BobDoleDontNeedThis);

mysql_close(); //close 2nd connection

私はこれを正しくやっていますか?なぜ$resnumbatwofalseを返すのですか?

4

5 に答える 5

4

PHP で複数の MySQL 接続を使用する場合、PHP に次のような新しい接続を実際に作成するように指示する 4 番目の引数を指定する必要があります (同じホストに対して 2 つの接続を使用している場合、これは非常に重要です)。

$db1 = mysql_connect($host1, $user1, $passwd1, true);
$db2 = mysql_connect($host2, $user2, $passwd2, true);

4 番目の引数が使用されず、パラメーターが同じである場合、PHP は同じリンクを返し、新しい接続は確立されません。

この後、使用する接続を定義する以外の追加パラメーターを指定して「mysql_query」を使用する必要があります。

$res1 = mysql_query($sql1, $db1) or die(mysql_error($res1));
$res2 = mysql_query($sql2, $db2) or die(mysql_error($res2));

php.net の 4 番目のパラメーターの説明は次のとおりです。
同じ引数を使用して mysql_connect() を 2 回呼び出した場合、新しいリンクは確立されませんが、代わりに、既に開いているリンクのリンク識別子が返されます。 new_link パラメータはこの動作を変更し、mysql_connect() が以前に同じパラメータで呼び出された場合でも、mysql_connect() が常に新しいリンクを開くようにします。SQL セーフ モードでは、このパラメータは無視されます。 "

詳細については、
http ://www.php.net/manual/en/function.mysql-connect.php を参照してください。

于 2013-02-27T11:42:54.267 に答える
1

mysql_fetch_arrayfalseクエリから返された一致するレコードがない場合に返されます。API リファレンス ドキュメントの次のエントリを参照してください。

戻り値:

フェッチされた行に対応する文字列の配列を返します。または行がそれ以上 FALSEない場合に返します。返される配列の型は、result_type の定義方法によって異なります。(デフォルト)を使用MYSQL_BOTH すると、連想インデックスと数値インデックスの両方を持つ配列が得られます。を使用するMYSQL_ASSOCと、連想インデックスのみが取得され( mysql_fetch_assoc()動作として)、 を使用するMYSQL_NUMと、数値インデックスのみが取得されます(mysql_fetch_row()動作として)。

于 2013-02-27T10:49:28.373 に答える
1

各接続ハンドラを変数に保存し、それを コレスポンデント に送信することをお勧めしmysql_query()ます。

例:

$dbch1 = mysql_connect($dshost, $dsusername, $dspassword);
$dbch2 = mysql_connect($db_host, $db_user, $db_password);

$cheeseburger = mysql_query($sql, $dbch1);
$BobDoleDontNeedThis = mysql_query($ASDFASDF, $dbch2);
于 2013-02-27T10:42:52.700 に答える
0

使用できます

$dbch1 = mysql_connect($dshost, $dsusername, $dspassword,true);
$dbch2 = mysql_connect($db_host, $db_user, $db_password,true);

$cheeseburger = mysql_query($sql, $dbch1);
$BobDoleDontNeedThis = mysql_query($ASDFASDF, $dbch2);
于 2015-04-06T12:59:31.137 に答える