Die BIT-Spalte ist ein binärer Typ in MySQL (obwohl sie als numerischer Typ dokumentiert ist - das ist nicht ganz richtig) und ich rate, sie aufgrund von Problemen mit Client-Bibliotheken zu vermeiden (was das PDO-Problem beweist). Sie ersparen sich viel Ärger, wenn Sie den Spaltentyp auf TINYINT(1)
ändernTINYINT(1) verbraucht natürlich für jede Zeile ein volles Byte an Speicherplatz, aber laut mysql-Dokumentation reicht BIT(1) auch aus.
von:http://dev.mysql.com/doc /refman/5.1/en/storage-requirements.html
Bit-Speicherbedarf ist:ungefähr (M+7)/8 Bytes, was darauf hindeutet, dass die BIT(M)-Spalte auch Byte-ausgerichtet ist.
Außerdem habe ich das gefunden:https://bugs.php.net/bug.php? id=50757
Sie können also überprüfen, ob der folgende Code wie erwartet funktioniert:
$pdo = new PDO("connection string etc") ;
$statement = $pdo->prepare('INSERT INTO `test` (SomeText,TestBool) VALUES (:someText,:testBool)') ;
$statement->bindValue(':someText', "TEST");
$statement->bindValue(':testBool', 0, PDO::PARAM_INT);
$statement->execute();
Sie können es auch mit anderen Typhinweisen als PARAM_INT versuchen, aber selbst wenn es funktioniert, empfehle ich, zu TINYINT zu wechseln.