我正试图使用php的mysqli扩展在mysql数据库中执行一些查询。
我的一个查询可以很好地处理字符串查询,它可以获取数据,并且连接是关闭的(我不确定如何关闭)。
但是,当我尝试调用存储过程而不是使用字符串查询时,它可以工作,但连接仍处于睡眠状态,不会关闭。
第1部分
工作和连接关闭
public function getCities(){
$connection = $this ->db-> connect();
$result = $connection -> query("select * from cities");
return $result;
}
第2部分
工作,但连接仍处于睡眠状态
public function getCities(){
$connection = $this ->db-> connect();
$result = $connection -> query("Call procGetCities()");
$isclosed=mysqli_close($connection);
if(!isclosed){
echo "notclosed";
} else {
echo "closed";//returnin closed
}
return $result;
}
我发现了同样的问题,但没有得到答案。
mysqli_close($connection);
如果mysqli成功关闭连接,将返回true
。因此,您不是在检查连接是否已关闭,而是在成功关闭连接。
成功时返回TRUE,失败时返回FALSE。
http://php.net/manual/en/mysqli.close.php
由于您在评论中添加了信息。
您要连接两次数据库,但只关闭一次连接。通常情况下,您会将连接存储在属性中并重用该连接,然后在调用或脚本结束时关闭它。这样的事情。
$connection = $this ->db-> connect();
public function getCities()
{
$result = $connection -> query("select * from cities");
return $result;
}
public function getCities()
{
$result = $connection -> query("Call procGetCities()");
return $result;
}
$isclosed=mysqli_close($connection);
if(!isclosed)
{
echo "notclosed";
}
else
{
echo "closed";//returnin closed
}