
更新数据库表中先前包含 NULL 值的列时,可能会遇到 affected_rows 返回 0 的情况,即使实际上已经有数据被成功更新。这通常是由于 SQL 查询语句中对 NULL 值的处理方式不当造成的。
在 MySQL 中,LIKE 运算符主要用于字符串的模糊匹配,而 IS NULL 和 IS NOT NULL 则专门用于判断某个值是否为 NULL。因此,当 column3 为 NULL 时,使用 column2 LIKE ? AND column3 IS NULL 可以正确匹配到 column3 为 NULL 的行,但问题在于,LIKE 操作符并不适合用于判断 NULL 值。
正确的做法是使用 IS NULL 来判断列是否为 NULL。以下是修改后的 SQL 查询语句:
$query = $conn->prepare("UPDATE table
SET column1=?
WHERE column2 LIKE ? AND column3 IS NULL");注意事项:
总结:
当更新包含 NULL 值的列时,affected_rows 返回 0 通常是由于 SQL 查询语句中对 NULL 值的处理方式不正确造成的。通过使用 IS NULL 或 IS NOT NULL 运算符,可以正确识别和更新 NULL 值,从而确保 affected_rows 能准确反映实际更新的行数。 此外,需要检查驱动配置,确保NULL值被正确处理。
以上就是更新包含 NULL 值的列后,受影响行数始终为 0 的问题分析与解决的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号