Cột BIT là một kiểu nhị phân trong mysql (mặc dù nó được ghi là kiểu số - điều đó không chính xác) và tôi khuyên bạn nên tránh nó do các vấn đề với thư viện máy khách (mà vấn đề PDO đã chứng minh). Bạn sẽ gặp rất nhiều rắc rối nếu bạn sửa đổi loại cột thành TINYINT (1)
TINYINT (1) tất nhiên sẽ sử dụng toàn bộ byte bộ nhớ cho mỗi hàng, nhưng theo tài liệu mysql thì BIT (1) cũng sẽ làm như vậy.
from: http://dev.mysql.com/doc /refman/5.1/en/storage-requirements.html
yêu cầu lưu trữ bit là:khoảng (M + 7) / 8 byte, điều này cho thấy cột BIT (M) cũng được căn chỉnh theo byte.
Ngoài ra, tôi cũng tìm thấy điều này: https://bugs.php.net/bug.php? id =50757
Vì vậy, bạn có thể kiểm tra xem mã sau có hoạt động như bạn mong đợi hay không:
$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();
Bạn cũng có thể thử với các gợi ý loại khác với PARAM_INT, ngay cả khi bạn vẫn hoạt động, tôi khuyên bạn nên thay đổi thành TINYINT.