ON DUPLICATE KEY UPDATE,带0值

时间:2014-08-07 21:42:24

标签: php mysql null key duplicates

我是一个无法解决的大问题。

我有一个将一些数据插入mysql数据库的表单。如果我要插入重复的密钥,则会更新某些字段。但如果表单包含空数据,则查询将不会触及旧数据。 下一个查询有效,但如果我插入" 0"查询不会使用新值(在这种情况下为" 0")升级行,而其他数字则有效。

这是查询:

INSERT INTO booking_prices (Data, Room, Disponibilita) 
VALUES ($data, $room, $_POST['Disponibilita']) 
ON DUPLICATE KEY UPDATE Disponibilita = IF(VALUES(Disponibilita) <> '', VALUES(Disponibilita), Disponibilita)

1 个答案:

答案 0 :(得分:1)

您正在接受MySQL的自动类型转换:

> select 0 = '', 0 <> '';
+--------+---------+
| 0 = '' | 0 <> '' |
+--------+---------+
|      1 |       0 |
+--------+---------+
1 row in set (0.00 sec)

注意两个测试实际上是如何成功的。 0等于''

如果你允许数字进入文本类型字段,你应该做一些更严格的测试:

> select BINARY 0 = '', BINARY 0 <> '';
+---------------+----------------+
| BINARY 0 = '' | BINARY 0 <> '' |
+---------------+----------------+
|             0 |              1 |
+---------------+----------------+
相关问题