我遇到了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无关,而是属于您正在使用的任何框架。