我正在尝试使用php的mysqli扩展在mysql数据库中执行一些查询。
我的一个查询在字符串查询中运行良好,它获取数据并关闭连接(我不知道如何)。
但是当我尝试调用存储过程而不是使用字符串查询时,它可以正常工作,但连接仍然处于睡眠状态并且不会关闭。
工作和连接关闭
public function getCities(){
$connection = $this ->db-> connect();
$result = $connection -> query("select * from cities");
return $result;
}
工作但连接仍处于睡眠状态
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;
}
我发现了同样的问题,但没有答案。
答案 0 :(得分:1)
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
}