BIT列はmysqlのバイナリ型であり(数値型として文書化されていますが、正確には正しくありません)、クライアントライブラリの問題(PDOの問題で証明されています)のために避けることをお勧めします。列のタイプをTINYINT(1)に変更すると、多くの問題を回避できます。
もちろん、TINYINT(1)はすべての行でフルバイトのストレージを消費しますが、mysqlのドキュメントによるとBIT(1)も同様に消費します。
差出人: http://dev.mysql.com/doc /refman/5.1/en/storage-requirements.html
ビットストレージ要件は次のとおりです。約(M + 7)/ 8バイト。これは、BIT(M)列もバイトアラインされていることを示しています。
また、私はこれを見つけました: https://bugs.php.net/bug.php? id =50757
したがって、次のコードが期待どおりに機能するかどうかを確認できます。
$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();
PARAM_INTとは異なるタイプのヒントを試すこともできますが、それでも機能させる場合は、TINYINTに変更することをお勧めします。