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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top