我有这个问题:
UPDATE table_name
SET field_1 = field_1 +100,
field_2 = field_2 +100,
field_3 = field_3 +100
WHERE id = 1
LIMIT 1;
其中Field_1是常规整数,Field_2是十进制(15,6),Field_3是double(15,6)。 当我从php脚本运行此查询时,他们只更新field_1并且没有任何事情发生在field_2和field_3,他们就像以前一样。但是当我在phpMyAdmin中运行时,它没有任何问题。
我试图锁定表,在运行更新之前进行round(),没有任何帮助。
请帮助...为什么我无法从php更新decimal和float字段?
PHP版本:5.2 Mysql第5版
没有任何帮助。但是我找到了一个小解决方案(我想远离它)。当我运行下一个查询时,如
INSERT INTO error SET error_type = ' ;
当然这是返回错误,但先前的查询更新更新了所有字段。
有什么建议吗?
答案 0 :(得分:1)
首先,您必须要求在PHP脚本中将积分值100转换为十进制和双重类型值。 $ num = number_format(100,6,'。',''); 执行此操作后...通过将$ num添加到小数和双精度字段值...来进行更新操作...
答案 1 :(得分:0)
可能存在的问题之一:
区域设置。如果您使用非英语 - 美国语言环境,则有可能您的数字被错误地解释 - 小数分隔符不是“。”,而是“,”,只需尝试插入“,”而不是“。”在您的浮点数中,看看会发生什么。如果是这样的话,你将不得不在PHP中编写一个转换函数(PHPAdmin有,这就是你没有遇到问题的原因),或者改变语言环境。