2010-05-21 117 views
0

我有这个疑问:PHP/MySQL不会更新小数场

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是双(15,6)。 当我从php脚本运行这个查询时,他们只更新field_1,没有发生field_2和field_3,他们只是像以前一样。但是,当我在phpMyAdmin中运行时,它没有任何问题。

我试图锁定表,使运行更新之前轮(),没有任何帮助。

请帮助...为什么我不能更新从PHP十进制和浮动字段?

PHP版本:5.2 MySQL版本5


没有什么帮助。但我找到了一个小解决方案(我想离开它)。当我运行一个查询像

INSERT INTO error SET error_type = ' ;

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

有什么建议吗?

+2

您可以发布PHP代码? – 2010-05-21 20:43:58

+0

更新没有使用现场工作?例如field_3 = 100而不是field_3 = field_3 + 100? – Konerak 2010-05-21 20:45:29

+0

尝试丢弃最后的限制1 – Noah 2010-05-21 20:46:29

回答

0

其中一个可能的问题:

区域设置。如果您使用的不是英文 - 美国语言环境,那么您的数字有可能被错误地解释 - 十进制分隔符不是“。”,而是“,”,只是尝试插入“,”而不是“。”。在你的浮点数,看看会发生什么。如果是这样的话,你必须在PHP中编写一个转换函数(PHPAdmin有这个功能,这就是为什么你不会在那里面对问题),或者改变语言环境。

1

首先,你必须要求将你的php脚本中的整数值100转换为十进制和双精度类型的值,如下所示: $ num = number_format(100,6,'。',''); 这样做后..通过添加$ num到小数和双字段值更新操作...