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

时间:2014-01-29 14:19:54

标签: 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)

但也会产生相同的结果。

1 个答案:

答案 0 :(得分:0)

activeDeviceHandler的类型是什么?如果它是枚举并且您将其设置为不是枚举成员之一的值,则最终将使用空值/空值。 e.g:

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)