PHP / MySQL不会更新十进制字段

时间:2010-05-21 20:42:17

标签: php mysql double decimal

我有这个问题:

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 = ' ;

当然这是返回错误,但先前的查询更新更新了所有字段。

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

首先,您必须要求在PHP脚本中将积分值100转换为十进制和双重类型值。  $ num = number_format(100,6,'。','');  执行此操作后...通过将$ num添加到小数和双精度字段值...来进行更新操作...

答案 1 :(得分:0)

可能存在的问题之一:

区域设置。如果您使用非英语 - 美国语言环境,则有可能您的数字被错误地解释 - 小数分隔符不是“。”,而是“,”,只需尝试插入“,”而不是“。”在您的浮点数中,看看会发生什么。如果是这样的话,你将不得不在PHP中编写一个转换函数(PHPAdmin有,这就是你没有遇到问题的原因),或者改变语言环境。