2

アプリケーションに 2 つのデータベース接続を使用しています。以下のように確立されたデータベース接続

$allrights = @mysql_connect(DB_SERVER,DB_USER,DB_PASS);
if (!$allrights) {
    //die("Database connection failed: " . mysql_error());
    echo "Check ServerHost,Username,Password Of the DataBase<br/>";
}
// 2. Select a database to use 
$db_select = @mysql_select_db(DB_NAME,$allrights);
if (!$db_select) {
    //die("Database selection failed: " . mysql_error());
    echo "Incorrect DataBase Name";
}


// 1. Create a database connection
$readonly = @mysql_connect(DB_SERVER,READONLY_DB_USER,READONLY_DB_PASS);
if (!$readonly) {
    //die("Database connection failed: " . mysql_error());
    echo "Check ServerHost,Readonly-Username,Password Of the DataBase<br/>";
}
// 2. Select a database to use 
$db_select = @mysql_select_db(DB_NAME,$readonly);
if (!$db_select) {
    //die("Database selection failed: " . mysql_error());
    echo "Incorrect DataBase Name";
}

しかし、すべての呼び出しを照会しながら

$query=mysql_query("SELECT * FROM <tablename>");

両方の接続が同じデータベースを参照しています。データのクエリ中に実際に呼び出す接続はどれですか?

4

3 に答える 3

1

mysql_connect()で複数のデータベース接続を使用する場合、以下のように 4 番目のオプション パラメータ (new_link) として true を渡す必要があります。

$readonly = @mysql_connect(DB_SERVER,READONLY_DB_USER,READONLY_DB_PASS, true);

リンク識別子も提供する必要があります。

PHPマニュアルより引用

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

注: mysqli_* の使用に関する他の人の提案に耳を傾けてください。

于 2013-10-10T05:12:56.510 に答える
0

次のようにクエリを使用します。

$query=mysql_query("SELECT * FROM <tablename>", $readonly); //the last parameter is the connection variable

: mysql_は間もなく非推奨になるため、fromと対話する正しい方法であるmysqli_ * を使用する必要があります。MySQLPHP

警告: Hanky 웃 Panky が言及したように、使用@すると警告が非推奨になり、接続障害や DB がない場合、またはデータベースに関するその他の問題が発生した場合に警告が表示されなくなります。

于 2013-10-10T04:59:08.723 に答える