2010-05-21 5 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-скрипта, они обновляют только поле_1, и ничего не происходит с field_2 и field_3, они просто остаются прежними. Но когда я запускаю phpMyAdmin, это без проблем.

Я пытаюсь заблокировать таблицы, сделать раунд() перед запуском обновления, ничего не поможет.

Пожалуйста, помогите ... почему я не могу обновить десятичные и поплавочные поля из php?

версия PHP 5.2 версия Mysql 5


Ничего помощь. Но я нашел одно небольшое решение (я хочу уйти от него). Когда я запускаю следующий запрос, как

INSERT INTO error SET error_type = ' ;

Конечно, это возвращение ошибки, но предыдущий запрос с обновлением обновления всех полей.

Любое предложение?

+2

Не могли бы вы опубликовать код PHP? –

+0

Выполняется ли ОБНОВЛЕНИЕ без использования поля? например field_3 = 100 вместо field_3 = field_3 + 100? – Konerak

+0

Попробуйте отбросить окончательный LIMIT 1 – Noah

ответ

0

Одна из возможных проблем:

Местность. Если вы используете не англо-американскую локаль, есть вероятность, что ваши цифры интерпретируются некорректно - десятичный разделитель не является «.», Но «,» просто попробуйте вставить «,» вместо «.». в ваших поплавковых номерах и посмотреть, что произойдет. Если это так, вам придется либо написать функцию преобразования в PHP (у которой есть PHPAdmin, поэтому у вас нет проблемы с ней), либо изменить локаль.

1

Во-первых, вам потребуется преобразовать целочисленное значение 100 в значения десятичного и двойного типа, подобные этому в вашем php-скрипте. $ num = number_format (100, 6, '.', ''); После этого выполните операцию update, добавив $ num к значениям десятичного и двойного типа ...