多个数据库连接冲突

时间:2013-10-10 04:57:26

标签: php mysql database

我正在使用两个数据库连接来申请。建立的数据库连接如下所示

$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>");

两个连接都指的是同一个数据库。查询数据时实际调用了哪些连接?

3 个答案:

答案 0 :(得分:3)

要指定连接,请将其作为参数传递,例如:

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

如果不这样,可以在mysql_query的文档中找到:

  

如果未指定链接标识符,则假定mysql_connect()打开的最后一个链接。

另外,请注意红色背景上的大警告:

  

自PHP 5.5.0起,此扩展程序已弃用,将来将被删除。相反,应该使用MySQLi或PDO_MySQL扩展。

答案 1 :(得分:1)

使用mysql_connect()处理多个数据库连接时,需要将true作为第4个可选参数(new_link)传递,如下所示

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

您还需要提供链接标识符。

来自PHP手册的引用

  

如果使用相同的参数对mysql_connect()进行第二次调用,则不会建立新的链接,而是返回已打开的链接的链接标识符。 new_link参数修改了这种行为,并使mysql_connect()始终打开一个新的链接,即使之前使用相同的参数调用了mysql_connect()。在SQL安全模式下,将忽略此参数。

注意:听取其他人关于使用mysqli _ *。

的建议

答案 2 :(得分:0)

使用如下查询:

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

注意:您必须使用 mysqli _ *,这是与MySQL PHP通信的正确方式,因为 mysql_ < / em>很快就会被弃用。

警告:正如Hanky웃Panky提到的那样使用@将弃用警告,如果连接失败并且没有数据库或其他一些问题,您最终将不会收到警告数据库。