意外的PDO“常规错误2050”取决于配置

时间:2016-09-25 16:58:48

标签: php mysql pdo

我有一些代码,其中变量$ query应该包含不同的PDOStatement对象,一个被另一个替换:

$query = $conn->prepare("select * from ... ");
$query->execute();
while ($tmp=$query->fetch(PDO::FETCH_ASSOC)) {
   ...;
}

//unset($query);
$query = $conn->query("select * from ... ");
while ($tmp=$query->fetch(PDO::FETCH_ASSOC)) {
    ....;
}  

使用这样的代码,我从最后一次获取的行上的PDO得到“SQLSTATE [HY000]:一般错误:2050”。但如果我用“未设置”取消注释 - 它会开始正常工作。

知道它可能是什么?

PS不使用未设置,它也适用于PDO :: ATTR_EMULATE_PREPARES = true

UPD 以下是MySQL站点的错误代码描述:

错误:2050(CR_FETCH_CANCELED) 消息:行检索已被mysql_stmt_close()调用

取消

1 个答案:

答案 0 :(得分:0)

在某些php版本中出现错误2050,因为您必须清空包含查询结果的对象的var 见 https://stackoverflow.com/a/36631355/2613863

Matt Cavanagh commet

中的