PDO在其他未缓冲的查询处于活动状态时无法执行查询

Jim*_*Jim 23 php mysql

我知道这必须是一个简单的修复,我部分理解为什么我收到此错误但不知道如何解决它.我查看了文档,但除了使用缓冲查询选项之外无法找到解决方案.我也试过了,但它不起作用.

错误是:PDO在其他未缓冲的查询处于活动状态时无法执行查询

错误来自我构建$ result数组的行.

foreach($phones as $phone)
{
    $stmt = db::getInstance()->prepare("CALL phones(:phone)");
    $stmt->bindParam(':phone', $phone, PDO::PARAM_INT, 10);
    $stmt->execute();

    $result[] = db::getInstance()->query("SELECT @phone;")->fetchAll(PDO::FETCH_ASSOC);
}
Run Code Online (Sandbox Code Playgroud)

Add*_*dsy 35

您需要使用PDOStatement :: closeCursor()方法释放连接

http://www.php.net/manual/en/pdostatement.closecursor.php

我相信

foreach($phones as $phone)
{
    $stmt = db::getInstance()->prepare("CALL phones(:phone)");
    $stmt->bindParam(':phone', $phone, PDO::PARAM_INT, 10);
    $stmt->execute();

    $stmt->closeCursor()

    $result[] = db::getInstance()->query("SELECT @phone;")->fetchAll(PDO::FETCH_ASSOC);
}
Run Code Online (Sandbox Code Playgroud)

应该为你做


kmo*_*y12 9

由于我的PDO连接子句中的错误,我遇到了这个问题.我试图在连接时改变时区:

PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8; SET time_zone = '$timezone';"
Run Code Online (Sandbox Code Playgroud)

我改成了:

PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8, time_zone = '$timezone';"
Run Code Online (Sandbox Code Playgroud)

它工作得很好.

  • 谢谢!有完全相同的问题! (3认同)