PHP + MySQL,两次调用mysql_connect会发生什么,例如:
$link = mysql_connect($server, $user, $pass);
$link = mysql_connect($server, $user, $pass);
PHP似乎没有产生任何通知。是忽略第二行还是建立新连接(如果是,是否自动关闭先前的连接)?
我知道,这些情况不应该首先发生。
答案 0 :(得分:2)
我知道这是一个老问题,但我自己也想知道同样的事情。 所以我做了一个测试,看看php是否会实际忽略一个连接,或者打开一个新的连接(这可能会很糟糕,因为它可能会给数据库带来一些额外的负担)。
<?
$test1 = mysqli_connect("127.0.0.1","root","pass","test_db");
$test2 = mysqli_connect("127.0.0.1","root","pass","test_db");
print "<pre>";
print_r($test1);
print_r($test2);
print "</pre>";
?>
以上将输出[thread_id]。 通过比较两个ID,我发现它们不相似,因此我必须假设现在有2个连接处于打开状态。
答案 1 :(得分:0)
我也在寻找答案。 Tnx到ComFreek我必须解决我的问题。我遇到了错误
mysql err 2014:命令不同步;您现在不能运行此命令
这是因为在获取连接中的另一个查询的中间执行了新查询。然后我想知道mysqli_connect是否总是返回一个新连接,或者如果存在则返回一个打开的连接。关于参数“ new_link”,已弃用的“ mysql_connect”的文档说(http://php.net/manual/en/function.mysql-connect.php):
new_link
如果使用相同的参数再次调用mysql_connect(),则不会建立新的链接,而是链接 将返回已经打开的链接的标识符。 new_link 参数修改此行为并使mysql_connect()始终打开 一个新的链接,即使之前使用相同的链接调用了mysql_connect() 参数。在SQL安全模式下,此参数将被忽略。
但是较新的类“ mysqli :: __ construct”的文档说(http://php.net/manual/en/mysqli.construct.php):
打开与MySQL服务器的连接。
这意味着它总是返回一个新的连接,所以我将其检出并使用新的连接进行了新的查询(中间的查询),并且此查询已修复。