我正在开发一个基于PDO的ORM,对于没有唯一ID字段的表,因此当我更新或删除时,我需要与记录的先前值进行比较,并且LIMIT 1
.
当我的查询最终到达数据库并使用参数执行时,一切都是正确的,正如一般查询日志所确认的那样,但是,什么也没有发生。
我没有抛出任何异常(PDO::ERRMODE_EXCEPTION
已打开),并且检查 $stmt->errorInfo()
返回干净,但是 $stmt ->rowCount()
返回 0
。
作为健全性检查,我打开日志文件,将 UPDATE 查询复制并粘贴到 Sequel Pro(OSX MySQL GUI)中并执行,一切都按预期工作,更新了 1 行。
为什么当手动执行IDENTICAL查询时,PDO 不更新行?
最佳答案
问题是我的代码使用
生成了一个查询WHERE `FieldName` = NULL
本该如此的时候
WHERE `FieldName` IS NULL
当由PDO执行时,它保留了= NULL
,导致没有记录匹配,但是当MySQL记录它时,它记录了IS NULL
,所以当我复制时/粘贴,查询正确并更新了该行。
关于php - PDO 准备语句不更新表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3133327/