Sloupec BIT je binární typ v mysql (ačkoli je zdokumentován jako číselný typ - to není přesně pravda) a doporučuji se mu vyhnout kvůli problémům s klientskými knihovnami (což problém PDO dokazuje). Ušetříte si spoustu problémů, pokud upravíte typ sloupce na TINYINT(1)
TINYINT(1) samozřejmě spotřebuje celý bajt úložiště pro každý řádek, ale podle dokumentů mysql to zvládne i BIT(1).
from:http://dev.mysql.com/doc /refman/5.1/cs/storage-requirements.html
Požadavek na úložiště bitů je:přibližně (M+7)/8 bajtů, což naznačuje, že sloupec BIT(M) je také zarovnán podle bajtů.
Také jsem našel toto:https://bugs.php.net/bug.php? id=50757
Můžete tedy zkontrolovat, zda následující kód funguje tak, jak očekáváte:
$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();
Můžete také zkusit použít jiné typy tipů než PARAM_INT, i když to bude fungovat, doporučuji změnit na TINYINT.