Значения с плавающей точкой неправильно сохраняются в таблице SQLite с использованием PHP
-
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.