BIT-kolonnen er en binær type i mysql (selvom den er dokumenteret som numerisk type - det er ikke præcist sandt), og jeg anbefaler at undgå det på grund af problemer med klientbiblioteker (hvilket PDO-problemet beviser). Du vil spare dig selv for mange problemer, hvis du ændrer kolonnetypen til TINYINT(1)
TINYINT(1) vil selvfølgelig forbruge fuld byte af lagerplads for hver række, men ifølge mysql docs vil BIT(1) også gøre det.
fra:http://dev.mysql.com/doc /refman/5.1/da/storage-requirements.html
bitlagringskravet er:ca. (M+7)/8 bytes, hvilket tyder på, at BIT(M)-kolonnen også er byte-justeret.
Jeg fandt også dette:https://bugs.php.net/bug.php? id=50757
Så du kan tjekke, om følgende kode fungerer, som du forventer:
$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 også prøve med andre typer tip end PARAM_INT, men selvom du får det til at virke, råder jeg dig til at skifte til TINYINT.