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?)

Antworten auf die Frage(4)

Ihre Antwort auf die Frage