Auge: MySQL: Leerstrings werden nicht zu NULL

Beitrag lesen

Hallo

Beim Zusammenbauen deiner Query schließt du jeden Wert in Stringbregrenzer ein, das ist ein Fehler. Der String 'NULL' hat in MySQL eine andere Bedeutung als NULL oder der leere String ''. Wenn du NULL als Wert einfügen willst, dann musst du beim Zusammenbauen der Query darauf achten, dass er keine Stringbegrenzer drumherum stehen:

INSERT INTO tablename (col1, col2) VALUES ( 'foobar', NULL );
anstatt:
INSERT INTO tablename (col1, col2) VALUES ( 'foobar', 'NULL' );

Das Gleiche gilt auch für Zahlen. Auch die sind nicht in Stringbegrenzer einzuschließen. Zudem ist die Behandlung einer Zahl mit mysql_real_escape_string nicht zielführend, da sie eben kein String ist. Stattdessen passt z.B. für Ganzzahlen intval. Die Funktion macht stumpf alles zu einer Ganzzahl und wenn's vom Typ und Wert nicht passt, wird eine 0 draus (Was nicht passt, wird passend gemacht! Siehe auch die Beispiele in der verlinkten Handbuchseite).

INSERT INTO tablename (col1, col2, col3) VALUES ( 'foobar', NULL, 4 );

Tschö, Auge

--
Verschiedene Glocken läuteten in der Stadt, und jede von ihnen vertrat eine ganz persönliche Meinung darüber, wann es Mitternacht war.
Terry Pratchett, "Wachen! Wachen!"
ie:{ fl:| br:> va:) ls:[ fo:) rl:( ss:| de:> js:| zu:}
Veranstaltungsdatenbank Vdb 0.3