如果调用两次mysql_connect的行为

问题描述 投票:2回答:2

PHP + MySQL,两次调用mysql_connect会发生什么,如:

$link = mysql_connect($server, $user, $pass);
$link = mysql_connect($server, $user, $pass);

PHP似乎没有产生任何通知。是忽略第二行还是建立新连接(如果是,那会自动关闭先前的连接)吗?

我知道,这些情况不应该首先发生。

php mysql mysql-connect
2个回答
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个连接处于打开状态。


0
投票

我也在寻找答案。 Tnx到ComFreek我必须解决我的问题。我正面临着这个错误

mysql错误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服务器的连接。

这意味着它总是返回一个新连接,所以我检查了它并使用新连接执行了新查询(中间的那个)并且它已修复。

© www.soinside.com 2019 - 2024. All rights reserved.