2013-09-02 6 views
7

मैं एक MySQL डेटाबेस के साथ संवाद करने के लिए वर्डप्रेस के अंदर WPDB ऑब्जेक्ट का उपयोग कर रहा हूं। मेरे डेटाबेस में bit(1) के प्रकार के साथ एक कॉलम है, हालांकि, वर्डप्रेस इन्हें मेरे उत्पादन सर्वर पर 0 या 1 के रूप में निकालने नहीं देता है (उन्होंने मेरी स्थानीय मशीन पर किया था)।वर्डप्रेस डाटाबेस क्लास - MySQL टाइप बिट


प्रश्न: मैं कैसे पता की जांच कर सकते

if ($data[0]->Sold == 1) { //Always false 
... 
if ($data[0]->Sold == 0) { //Always false 

:

अगर मैं Wordpress से एक डेटाबेस मूल्य है, मैं एक साधारण तुलना 0 या 1 को ऐसा नहीं कर सकते मूल्य 01 है?


पृष्ठभूमि:

यह मेरा स्थानीय मशीन पर कोई मुद्दा नहीं था, लेकिन केवल उत्पादन में।

मैं इस तरह डेटाबेस क्वेरी:

$data = $wpdb->get_results("..."); 

जब मैं डेटाबेस से परिणामों पर एक var_dump() करते हैं, यहां उत्पादन अपने ब्राउज़र से पता चलता है:

array(1) { 
    [0] => object(stdClass)#261 (10) { 
    ["SaleID"]  => string(4) "1561" 
    ["BookID"]  => string(2) "45" 
    ["MerchantID"] => string(1) "1" 
    ["Upload"]  => string(19) "2012-11-20 15:46:15" 
    ["Sold"]  => string(1) "" 
    ["Price"]  => string(1) "5" 
    ["Condition"] => string(1) "5" 
    ["Written"] => string(1) "" 
    ["Comments"] => string(179) "<p>I am the first owner of this barely used book. There aren't any signs of normal wear and tear, not even any creases on the cover or any of its pages. It would pass for new.</p>" 
    ["Expiring"] => string(19) "2013-05-20 15:46:15" 
    } 
} 

सूचना कैसे Sold और Written1 का एक स्ट्रिंग आकार दिखाएं, लेकिन कोई संबंधित मान नहीं है। इन मानों को क्रमशः 1 और 0 के साथ पॉप्युलेट किया जाना चाहिए।

क्रोम निरीक्षक उपकरण इन मूल्यों के लिए कुछ काफी रोचक पता चलता है:

enter image description here

enter image description here

\u1 या \u0 क्या है और क्यों वे बस 1 या 0, तो मैं क्या कर सकते हैं नहीं कर रहे हैं तुलना?

आपके समय के लिए धन्यवाद।

+0

ऐसा लगता है जैसे मान MySQL डेटाबेस में सेट नहीं हैं। mySQL में पंक्तियों को अद्यतन करने का प्रयास करें। – fredrik

+0

@ फ़्रेड्रिक मैंने उल्लेख किया था: "इन मानों को क्रमशः' 1' और '0' के साथ पॉप्युलेट किया जाना चाहिए।" –

+0

अच्छी तरह से '\ u1' और' \ u0' सामग्री है, दुर्भाग्यवश नियंत्रण वर्णों का यूनिकोड प्रतिनिधित्व। शायद आप उन्हें एक पूर्णांक में डालने का प्रयास कर सकते हैं। – feeela

उत्तर

1

चेक इस जवाब बाहर: "। आप PHP का उपयोग कर एक MySQL डेटाबेस से डेटा का चयन करते हैं डेटाप्रकार हमेशा एक स्ट्रिंग में परिवर्तित हो जाएगा" https://stackoverflow.com/a/5323169/794897

आप या तो कर सकते हैं:

if ($data[0]->Sold === "1") { 
... 
if ($data[0]->Sold === "0") { 

या प्रकार चर, जैसे डाली

$Sold = (int) $data[0]->Sold; 

if ($Sold === 1) { 
... 
if ($Sold === 0) { 
0

मेरे लिए समाधान ord समारोह का इस्तेमाल किया गया: http://us1.php.net/manual/en/function.ord.php

संपादित

फिर भी व्यवहार सर्वर के आधार पर भिन्न हो रहा है। मारियाडीबी 10.0.14 के साथ आर्क लिनक्स और उबंटू के साथ MySQL 5.5.37-0ubuntu0.13.10.1 wpdb अच्छा पुराना "0" या "1" स्ट्रिंग देता है, समस्याग्रस्त बिट स्ट्रिंग नहीं, जो CentOS 6.4 MySQL 5.1 पर होता है .73

संबंधित मुद्दे