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

2022-08-30 16:30:07

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

错误是: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);
}

答案 1

您需要使用 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);
}

应该为你做


答案 2

由于PDO连接子句中的错误,我遇到了此问题。我试图在连接时更改时区:

PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8; SET time_zone = '$timezone';"

我把它改成了:

PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8, time_zone = '$timezone';"

而且效果很好。


推荐