2010-01-27 2 views
0

Я использую SQLite 3 с PHP.Поплавки не сохранены правильно в таблице SQLite с использованием PHP

Таблица SQLite состоит из 2 столбцов INTEGER и одного столбца FLOAT. При сохранении данных в этой таблице с помощью 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

+1

Что каждый компьютерный ученый должен знать о арифметике с плавающей запятой: http://docs.sun.com/source/806-3568/ncg_goldberg.html –

+2

Что за заменитель? Я не вижу первичных ключей. – Pentium10

ответ

2

Это просто предложение, видя, как я никогда не использовал SQLite, но вы уверены, числа должны быть указаны? Это кажется мне несколько странным.

Try: типы

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

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, вам может быть ошибка, и вы передаете нулевую переменную.

+0

Спасибо за ваш ответ, я сделал печать инструкции SQL перед вызовом $ conn-> query ($ sql): REPLACE INTO данные (id, ts, value) VALUES ('493', '1264590900', ' 232.8 ') Результат в базе данных: 493 | ​​1264590900 | null приведенный выше код работает правильно, но в «реальном» коде у меня есть код сбора данных между «новым SQLite3()» и «- > query ' – flurin

+0

запустит ваш запрос в консоли базы данных, он отлично работает (возможно, у вас неправильная таблица создания или если вы используете триггеры, проверьте их тоже) – Pentium10

+0

да, в консоли базы данных все нормально работает ... что такое триггеры? – flurin

Смежные вопросы