Frage

Ich verwende SQLite 3 mit PHP.

Die SQLite-Tabelle besteht aus 2 INTEGER und einer FLOAT-Spalte. Wenn Daten in dieser Tabelle Speichern PHP-Floats mit nicht korrekt gespeichert (Standardwert wird gespeichert statt). Die beiden Integer-Spalten werden gespeichert. Irgendwelche Ideen, was könnte falsch sein? Danke.

Code vereinfacht, das tatsächlich funktioniert richtig:

$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

Keine korrekte Lösung

Andere Tipps

Dies ist nur ein Vorschlag, da habe ich SQLite nie verwendet, aber sind Sie sicher, sollten die Zahlen zitiert werden? Das scheint ein wenig seltsam für mich.

Versuchen Sie:

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

SQLite-Datentypen sind typenlos, so dass Ihre Anfragen an Arbeit haben:

Alle folgenden Abfragen funktioniert für mich

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');

Überprüfen Sie Ihre PHP-Variable, könnten Sie einen Fehler haben, und Sie passieren eine Null-Variable.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top