Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

PDOstatement (MySQL):मान 0 को बिट में सम्मिलित करना(1) फ़ील्ड परिणाम 1 तालिका में लिखा गया है

बीआईटी कॉलम 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 में बदलने की सलाह देता हूं।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एकाधिक मॉडलों से शामिल करें, चुनें, क्रमबद्ध करें, सीमित करें (एकल क्वेरी)

  2. मैं एक MySQL तिथि में महीना और वर्ष कैसे निकालूं और उनकी तुलना कैसे करूं?

  3. mysql में डमी डेटा के साथ स्वचालित रूप से तालिका को पॉप्युलेट करें

  4. दो तिथियों के बीच अंतर को घंटों तक कैसे प्राप्त करें

  5. एकाधिक पंक्तियों के लिए अंतिम सम्मिलित आईडी पुनर्प्राप्त करना