BIT-kolom is een binair type in mysql (hoewel het is gedocumenteerd als numeriek type - dat is niet precies waar) en ik adviseer om het te vermijden vanwege problemen met clientbibliotheken (wat PDO-probleem bewijst). U bespaart uzelf een hoop moeite als u het type kolom wijzigt in TINYINT(1)
TINYINT(1) zal natuurlijk de volledige byte aan opslagruimte verbruiken voor elke rij, maar volgens mysql docs zal BIT(1) het ook doen.
from:http://dev.mysql.com/doc /refman/5.1/en/storage-requirements.html
vereiste bitopslag is:ongeveer (M+7)/8 bytes, wat suggereert dat de BIT(M)-kolom ook byte-uitgelijnd is.
Ook vond ik dit:https://bugs.php.net/bug.php? id=50757
U kunt dus controleren of de volgende code werkt zoals u verwacht:
$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();
Je kunt het ook proberen met andere type hints dan PARAM_INT, maar zelfs als je het laat werken, raad ik aan om over te schakelen naar TINYINT.