php - PDO 准备语句不更新表

标签 php mysql pdo

我正在开发一个基于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/

相关文章:

php - 如何根据条件向数组添加一些项目?

php - 将数据插入 decimal(12,2) 类型的数据库表字段

python - 如何使用python将阿拉伯语文本存储在mysql数据库中?

php - PDO 不在表中插入多行

mysql - 在 MySQL 中创建一个新列,该列是另一列的移位版本,其中包含空行?

MySQL错误没有意义?

mysql - 对重复键进行 INSERT 和 UPDATE

javascript - 如何限制每页显示的图像数量?

php - 在 Joomla 查询中使用 inner join sql 命令时遇到问题

PHP 过滤器(多个下拉列表)