我遇到了PDO :: exec()方法的问题。我现在想要弄清楚一个小时,但仍然无处可去。这可能是我遗失的一些小事。
我使用exec在数据库中更新(并在另一段代码中删除)一行。根据手册,exec应该返回受影响的行数。但在我的情况下(更新和删除),exec运行,physicaly更新数据库,但仍然返回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行,即使该行实际更新。
Id我用异常评论该行,一切运行正常(但我无法处理错误)。
有人能帮忙吗?
PS。:我正在使用Nette Framework,因此使用?的查询是有效的。$ entity的内容也是有效的
答案 0 :(得分:-1)
Pdo exec不支持预备语句。因此,exec()
方法的任何行为都与PDO无关,但属于您正在使用的任何框架。