0

我遇到了 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');

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

如果我用异常注释该行,一切运行正常(但我无法处理错误)。

有人可以帮忙吗??

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

4

1 回答 1

-1

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

于 2013-07-10T07:26:55.297 回答