php - 为什么我的 MySQL 字段在更新时重置为 null?

标签 php mysql sql null

我的表中有几行,我正在查看一个名为 activeDeviceHandler 的特定字段。有些值是实际文本,有些值不包含任何内容,即“”(不是 NULL 值)。

我只想更新没有字段值的行。我正在使用的查询是:

UPDATE activeDevices SET activeDeviceHandler="hello world" 
    WHERE activeDeviceHandler=""

此查询在 MySQL Workbench 中按预期执行,但是当我在 PHP 中执行查询时,字段的值全部变为 null,无论它们是否包含文本。

这是非常不寻常的。任何人都可以帮助或建议替代查询吗?我已经尝试过

UPDATE activeDevices SET activeDeviceHandler="hello world" 
    WHERE (LENGTH(activeDeviceHandler) < 1)

也是如此,但这会产生相同的结果。

最佳答案

activeDeviceHandler 的类型是什么?如果它是一个枚举,并且您将其设置为不是枚举成员之一的值,则最终会得到一个空白/空值。例如:

mysql> create table foo (x enum('a','b'));
Query OK, 0 rows affected (0.01 sec)

mysql> insert into foo (x) values ('c'); // 'c' is not in the enum...
Query OK, 1 row affected, 1 warning (0.00 sec) // note the warning here

mysql> select x, length(x), isnull(x) from foo;
+------+-----------+-----------+
| x    | length(x) | isnull(x) |
+------+-----------+-----------+
|      |         0 |         0 |
+------+-----------+-----------+
1 row in set (0.00 sec)

关于php - 为什么我的 MySQL 字段在更新时重置为 null?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21433760/

相关文章:

php - 本地主机镜像地址中的url错误

php - find()、findOrFail()、first()、firstOrFail()、get()、list()、toArray() 有什么区别

mysql - 如何编写可以得到以下结果的 SQL 查询?

sql - MySQL 中 MyISAM 存储引擎上的检查约束等约束,而不是空约束

php - 如何使用 symfony 3 在 php 中将日期属性设置为当前日期

mysql - 由于 Angular Universal 中的 Zone.js 服务器渲染停止工作。怎么修?

php - 如何根据数据库的搜索结果预填充字段

Mysql Select 显示结果被截断第一个字母

python - SQLite 是否优化了 WHERE 子句中具有多个 AND 条件的查询?

PHP Mysql 网站性能测量