BIT-kolumnen är en binär typ i mysql (även om den är dokumenterad som numerisk typ - det är inte exakt sant) och jag råder dig att undvika det på grund av problem med klientbibliotek (vilket PDO-problem bevisar). Du kommer att bespara dig själv mycket problem om du ändrar kolumntyp till TINYINT(1)
TINYINT(1) kommer naturligtvis att förbruka full byte av lagringsutrymme för varje rad, men enligt mysql docs kommer BIT(1) att göra det också.
från:http://dev.mysql.com/doc /refman/5.1/en/storage-requirements.html
bitlagringskravet är:ungefär (M+7)/8 byte, vilket tyder på att BIT(M)-kolumnen också är bytejusterad.
Jag hittade också detta:https://bugs.php.net/bug.php? id=50757
Så du kan kontrollera om följande kod fungerar som du förväntar dig:
$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();
Du kan också prova med andra typer av tips än PARAM_INT, men även om du får det att fungera rekommenderar jag att du byter till TINYINT.