Kolumna BIT jest typem binarnym w mysql (choć jest udokumentowana jako typ numeryczny - to nie do końca prawda) i radzę jej unikać ze względu na problemy z bibliotekami klienckimi (co dowodzi problem PDO). Zaoszczędzisz sobie wiele kłopotów, jeśli zmodyfikujesz typ kolumny na TINYINT(1)
TINYINT(1) oczywiście zużyje pełny bajt pamięci dla każdego wiersza, ale zgodnie z dokumentacją mysql BIT(1) też to zrobi.
from:http://dev.mysql.com/doc /refman/5.1/en/storage-requirements.html
Wymagania dotyczące przechowywania bitów to:około (M+7)/8 bajtów, co sugeruje, że kolumna BIT(M) jest również wyrównana do bajtów.
Znalazłem również to:https://bugs.php.net/bug.php? id=50757
Możesz więc sprawdzić, czy poniższy kod działa zgodnie z oczekiwaniami:
$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();
Możesz także spróbować z innymi wskazówkami dotyczącymi typów niż PARAM_INT, ale nawet jeśli to zadziała, radzę zmienić na TINYINT.