我正在开发一个基于PDO的ORM,用于没有唯一ID字段的表,所以当我更新或删除时,我需要与记录的先前值进行比较,然后 LIMIT 1 .
LIMIT 1
但是,当我的查询最终到达数据库并使用参数执行时,一切都是正确的,正如常规查询日志所确认的, .
我没有被抛出异常( PDO::ERRMODE_EXCEPTION 已打开),正在检查 $stmt->errorInfo() 回来的时候很干净,但是 $stmt->rowCount() 退货 0
PDO::ERRMODE_EXCEPTION
$stmt->errorInfo()
$stmt->rowCount()
0
作为健全性检查,我打开日志文件,复制并粘贴更新查询到Sequel Pro(一个OSX MySQL GUI)中并执行,所有操作都按预期工作,更新了1行。
当手动执行 查询是什么?
问题是我的代码使用
WHERE `FieldName` = NULL
WHERE `FieldName` IS NULL
当PDO执行时,它保持 = NULL ,导致没有匹配的记录,但当MySQL记录它时,它会记录 IS NULL ,因此当我复制/粘贴时,查询是正确的并更新了行。
= NULL
IS NULL