Значения с плавающей точкой неправильно сохраняются в таблице SQLite с использованием PHP

StackOverflow https://stackoverflow.com/questions/2146376

  •  23-09-2019
  •  | 
  •  

Вопрос

Я использую SQLite 3 с PHP.

Таблица SQLite состоит из 2 целых и одного столбца с плавающей точкой.При сохранении данных в эту таблицу с помощью PHP значения с плавающей запятой сохраняются некорректно (вместо этого сохраняется значение по умолчанию).Два столбца целых чисел будут сохранены.Есть какие-нибудь идеи, что может быть не так?Спасибо.

Упрощенный код, который на самом деле работает корректно:

$conn = new SQLite3('dbFileName');
$conn->query("CREATE TABLE data (
       id INTEGER NOT NULL DEFAULT 0 ,
       ts INTEGER NOT NULL DEFAULT 0 ,
       value FLOAT NOT NULL DEFAULT 0
    );"
);
$conn->query("REPLACE INTO data(id,ts,value) VALUES ('1','1234567890','12.1')");

-> 1|1234567890|0

Нет правильного решения

Другие советы

Это всего лишь предложение, поскольку я никогда не использовал SQLite, но вы уверены, что цифры следует заключать в кавычки?Мне это кажется несколько странным.

Попробуй:

$conn->query("REPLACE INTO data(id,ts,value) VALUES (1, 1234567890, 12.1)");

Типы данных Sqlite не имеют типов, поэтому ваши запросы должны работать:

все следующие запросы работают для меня

REPLACE INTO data(id,ts,value) VALUES ('1','1234567890','12.1');
REPLACE INTO data(id,ts,value) VALUES ('1','1234567890','12,123')
REPLACE INTO data(id,ts,value) VALUES ('1','1234567890','abc');

Проверьте свою переменную PHP, возможно, у вас ошибка, и вы передаете переменную null.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top