Ich habe eine Abfrage, die dynamisch (OO PHP über Joomla) geschrieben wird, um einige Werte in eine MySQL-Datenbank einzufügen. Das Formular, das ein Benutzer ausfüllt, hat ein Feld für den Dollar-Betrag, und wenn sie das leer lassen, möchte ich, dass der Wert, der in das System geht, NULL ist. Ich habe die Abfrage in das Fehlerprotokoll geschrieben, während sie ausgeführt wird; so sieht die Abfrage aus:
INSERT INTO arrc_Voucher
(VoucherNbr,securityCode,sequentialNumber, TypeFlag, CreateDT, ActivatedDT, BalanceInit, BalanceCurrent, clientName)
VALUES
('6032100199108006', '99108006','12','V','2010-10-29 12:50:01','NULL','NULL','NULL','')
Wenn ich jedoch in der Datenbanktabelle nachsehe, ist ActivatedDT zwar korrekt auf NULL gesetzt, aber BalanceInit und BalanceCurrent sind beide 0,00. Das Feld ActivatedDT ist ein Datetime-Feld, während die beiden anderen Felder decimal(18,2) sind, und alle drei sind in der Tabellenstruktur auf den Standardwert NULL eingestellt.
Wenn ich eine Abfrage wie diese ausführe:
UPDATE arrc_Voucher
SET BalanceInit = null
WHERE BalanceInit like "0%"
...es setzt den Wert auf Null, warum also tut die anfängliche Einfügeabfrage dies nicht? Liegt es daran, dass null in Anführungszeichen steht? Und wenn ja, warum wird er für ActivatedDT korrekt gesetzt?