PDO-Anweisung (MySQL): Wenn Sie den Wert 0 in ein Bit (1) -Feld einfügen, wird 1 in die Tabelle geschrieben
Ich verwende ein Bit (1) -Feld, um boolesche Werte zu speichern und mit PDO-vorbereiteten Anweisungen in die Tabelle zu schreiben.
Dies ist die Testtabelle:
<code>CREATE TABLE IF NOT EXISTS `test` ( `SomeText` varchar(255) NOT NULL, `TestBool` bit(1) NOT NULL DEFAULT b'0' ) ENGINE=MEMORY DEFAULT CHARSET=latin1; </code>
Dies ist der Testcode:
<code>$pdo = new PDO("connection string etc") ; $statement = $pdo->prepare('INSERT INTO `test` (SomeText,TestBool) VALUES (?,?)') ; $statement->execute(array("TEST",0)) ; </code>
Durch Ausführen dieses Codes erhalte ich eine Zeile mit dem Wert 1 unter TestBool. Und das Gleiche mit bindValue () und bindParm (). Ich habe auch benannte Platzhalter (anstelle von?) Mit dem gleichen Ergebnis ausprobiert.
Dann habe ich versucht:
<code>$statement = $pdo->prepare('INSERT INTO `test` (SomeText,TestBool) VALUES ("TEST",0)') ; $statement->execute() ; </code>
Welches hat richtig funktioniert (TestBool hat den Wert 0). Das direkte Einbinden von SQL in MySQL funktioniert ebenfalls.
Beachten Sie, dass das Einfügen von 1 immer funktioniert.
Warum können Platzhalter den Wert 0 nicht einfügen? (und wie mache ich das eigentlich?)