Flotteurs ne sont pas enregistrés correctement dans la table SQLite en PHP
-
23-09-2019 - |
Question
J'utilise SQLite 3 avec PHP.
Le tableau SQLite se compose de deux INTEGER et une colonne FLOAT. Lors de l'enregistrement des données dans ce tableau en utilisant des flotteurs PHP ne sont pas enregistrés correctement (valeur par défaut est stockée à la place). Les deux colonnes entières sont enregistrées. Toutes les idées ce qui pourrait être mal? Merci.
Code simplifié qui fonctionne correctement:
$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
Pas de solution correcte
Autres conseils
Ceci est juste une suggestion, car je ne l'ai jamais utilisé SQLite, mais êtes-vous sûr que les chiffres devraient être cités? Cela me semble un peu bizarre.
Essayez:
$conn->query("REPLACE INTO data(id,ts,value) VALUES (1, 1234567890, 12.1)");
types de données SQLite sans type, de sorte que vos requêtes doivent travailler:
toutes les requêtes suivantes fonctionne pour moi
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');
Vérifiez votre variable PHP, vous pourriez avoir un bug et que vous passez une variable nulle.