我正在开发一个基于PDO的ORM,用于没有唯一ID字段的表,因此当我更新或删除时,我需要与记录的先前值进行比较,并LIMIT 1
。< / p>
当我的查询最终到达数据库并使用参数执行时,一切都是正确的,正如一般查询日志所确认的那样,没有发生任何事情。
我没有抛出任何异常(PDO::ERRMODE_EXCEPTION
已开启),并且检查$stmt->errorInfo()
恢复干净,但$stmt->rowCount()
返回0
。
作为一个完整性检查,我打开了日志文件,将UPDATE查询复制并粘贴到Sequel Pro(一个OSX MySQL GUI)并执行,一切都按预期工作,更新了一行。
为什么PDO在手动执行 IDENTICAL 查询时不会更新行?
答案 0 :(得分:2)
问题是我的代码使用
生成了一个查询WHERE `FieldName` = NULL
应该是什么时候
WHERE `FieldName` IS NULL
当由PDO执行时,它保留= NULL
,导致没有匹配的记录,但是当MySQL记录它时,它记录了IS NULL
,所以当我复制/粘贴时,查询是正确的,更新了这一行。