【发布时间】:2010-06-28 14:40:29
【问题描述】:
我正在开发一个基于 PDO 的 ORM,针对没有唯一 ID 字段的表,所以当我更新或删除时,我需要与记录的先前值进行比较,以及LIMIT 1。
当我的查询最终到达数据库并使用参数执行时,一切都是正确的,正如一般查询日志所证实的那样,但是,什么都没有发生。
我没有抛出异常(PDO::ERRMODE_EXCEPTION 开启),检查 $stmt->errorInfo() 恢复正常,但 $stmt->rowCount() 返回 0。
作为健全性检查,我打开日志文件,将 UPDATE 查询复制并粘贴到 Sequel Pro(OSX MySQL GUI)中并执行,一切都按预期工作,更新了 1 行。
当手动执行 IDENTICAL 查询时,为什么 PDO 不更新行?
【问题讨论】:
-
您能不能显示一下不起作用的代码?
-
@Bill:不是。我检查了。问题在于他们引用了占位符。
-
已解决。我的代码为 WHERE 子句生成
= NULL,而它应该是IS NULL。 MySQL(无论出于何种原因)在记录时将=更改为IS,但在执行时不会。