Php mysqli连接在呼叫程序后仍然存在

时间:2015-11-19 22:02:44

标签: php stored-procedures mysqli

我正在尝试使用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;
}

我发现了同样的问题,但没有答案。

1 个答案:

答案 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
}