我正在使用两个数据库连接来申请。建立的数据库连接如下所示
$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>");
两个连接都指的是同一个数据库。查询数据时实际调用了哪些连接?
答案 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提到的那样使用@
将弃用警告,如果连接失败并且没有数据库或其他一些问题,您最终将不会收到警告数据库。