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

时间:2013-07-10 07:17:10

标签: php pdo exec

我遇到了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的内容也是有效的

1 个答案:

答案 0 :(得分:-1)

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