PDO exec返回0,而不是受影响的行


PDO exec returns 0 instead of rows affected

我遇到了PDO::exec()方法的问题。我试着想了一个小时,但还是一无所获。这可能是我错过的一些小事。

我使用exec来更新(并在另一段代码中删除)数据库中的一行。根据手册,exec应该返回受影响的行数。但在我的情况下(更新和删除),exec运行,物理地更新数据库,但仍然返回0。

这是我的更新语句代码(删除类似)

$data = Array(
    'title' => $entity->getTitle(),
    'subtitle' => $entity->getSubtitle(),
    'text' => $entity->getText(),
);
$response = $this->conn->exec("UPDATE entries SET ? WHERE id = ?", $data, $entity->getId());
if($response <> 1) throw new Exception('Update statement affected '.$response.' rows');

上面的代码将输出Uncaught异常:Update语句影响了0行,即使该行实际上已更新。

我对这行进行了异常注释,一切都很好(但我无法处理错误)。

有人能帮忙吗??

PS.:我使用的是Nette Framework,所以查询带有?'s有效。。$entity的内容也是有效的

Pdo-exec不支持准备好的语句。因此,exec()方法的任何行为都与PDO无关,而是属于您正在使用的任何框架。