बीआईटी कॉलम MySQL में एक बाइनरी प्रकार है (हालांकि इसे संख्यात्मक प्रकार के रूप में प्रलेखित किया गया है - यह बिल्कुल सच नहीं है) और मैं क्लाइंट पुस्तकालयों (जो पीडीओ मुद्दा साबित होता है) के साथ समस्याओं के कारण इसे टालने की सलाह देता हूं। यदि आप कॉलम के प्रकार को TINYINT(1)
. में संशोधित करते हैं तो आप अपने आप को बहुत परेशानी से बचा लेंगेTINYINT(1) निश्चित रूप से प्रत्येक पंक्ति के लिए भंडारण के पूर्ण बाइट का उपभोग करेगा, लेकिन mysql डॉक्स के अनुसार BIT(1) भी करेगा।
से:http://dev.mysql.com/doc /refman/5.1/hi/storage-requirements.html
बिट स्टोरेज की आवश्यकता है:लगभग (M+7)/8 बाइट्स जो बताता है कि BIT(M) कॉलम भी बाइट-अलाइन है।
मुझे यह भी मिला:https://bugs.php.net/bug.php? आईडी=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 में बदलने की सलाह देता हूं।