PHP / MySQL не будет обновлять десятичное поле - PullRequest
0 голосов
/ 22 мая 2010

У меня есть этот запрос:

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, он работает без проблем.

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

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

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


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

INSERT INTO error SET error_type = ' ;

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

Есть предложения?

Ответы [ 2 ]

1 голос
/ 28 января 2017

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

0 голосов
/ 22 мая 2010

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

Locale. Если вы используете неанглийский - американский язык, есть вероятность, что Ваши числа интерпретируются неправильно - десятичный разделитель - это не ".", А ",", просто попробуйте вставить "," вместо "." в твои числа с плавающей точкой и посмотри что получится. Если это так, вам придется либо написать конвертирующую функцию в PHP (которую имеет PHPAdmin, поэтому у вас там нет проблем), либо изменить локаль.

...