【发布时间】:2013-07-08 00:35:35
【问题描述】:
我遇到了 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 exception: Update statement affected 0 rows, 即使该行实际已更新。
我用异常注释了该行,一切运行正常(但我无法处理错误)。
有人可以帮忙吗?
PS.:我使用的是 Nette Framework,所以带有 ? 的查询是有效的。$entity 的内容也是有效的
【问题讨论】:
-
这是有效的 php
$response <> 1 -
@DevZer0 - Yes, it is.
-
@ÁlvaroG.Vicario 谢谢
-
在手动函数原型中只显示了 1 个参数,
public int PDO::exec ( string $statement )我没有看到它提到的任何地方,您可以使用它动态绑定参数。 -
@DevZer0 Nette 框架覆盖
exec()以实现预处理语句功能。