Kolom BIT adalah tipe biner di mysql (meskipun didokumentasikan sebagai tipe numerik - itu tidak sepenuhnya benar) dan saya menyarankan untuk menghindarinya karena masalah dengan pustaka klien (yang dibuktikan oleh masalah PDO). Anda akan terhindar dari banyak masalah jika Anda mengubah jenis kolom menjadi TINYINT(1)
TINYINT(1) tentu saja akan menggunakan penyimpanan byte penuh untuk setiap baris, tetapi menurut dokumen mysql, BIT(1) juga akan digunakan.
dari:http://dev.mysql.com/doc /refman/5.1/en/storage-requirements.html
persyaratan penyimpanan bit adalah:kira-kira (M+7)/8 byte yang menunjukkan bahwa kolom BIT(M) juga selaras dengan byte.
Saya juga menemukan ini:https://bugs.php.net/bug.php? id=50757
Jadi Anda dapat memeriksa apakah kode berikut berfungsi seperti yang Anda harapkan:
$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();
Anda juga dapat mencoba dengan petunjuk jenis yang berbeda dari PARAM_INT, meskipun Anda berhasil, saya sarankan untuk mengubah ke TINYINT.