我有一个大问题无法解决。
我有一种将一些数据插入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)
最佳答案
您会因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 |
+---------------+----------------+