2011-05-23 15 views
6

मैं एक प्रश्न है कि इस तरह दिखता है:क्लॉज सभी पंक्तियों को वापस करने में गलत मूल्य?

`SELECT id, username FROM table_name WHERE username=0` 

जब मैं इस क्वेरी MySQL TABLE_NAME में सभी पंक्तियों को देता है चलाते हैं। इसके अतिरिक्त, यदि मैं झूठी के लिए 0 को प्रतिस्थापित करता हूं तो मुझे एक ही परिणाम मिलते हैं। अगर मैं शून्य या खाली स्ट्रिंग का उपयोग करता हूं तो मुझे कोई पंक्तियां वापस नहीं आती हैं (अपेक्षित के रूप में)।

उपयोगकर्ता नाम कॉलम वर्चर (50) है यदि यह कोई फर्क पड़ता है।

क्यों कि क्वेरी में 0 या गलत डाल सभी पंक्तियों तालिका में वापसी करता है:

मेरा प्रश्न है तो इस है? क्या यह एक MySQL सेटिंग है?

यह मुझे थोड़ा चिंतित करता है क्योंकि मैं इस धारणा के तहत काम कर रहा हूं कि उपरोक्त क्वेरी कोई पंक्ति नहीं लौटाएगी (इस विशेष मामले में) और मुझे आश्चर्य है कि यह मेरे आवेदन में कहीं और हो रहा है और इसके अनपेक्षित परिणाम क्या हो सकते हैं।

उत्तर

5

उपयोगकर्ता नाम को संपीड़न बनाने के लिए 0 के int में डाला जा रहा है। 0 = 0 सत्य का मूल्यांकन करता है, इसलिए ऐसा लगता है कि यहां कोई WHERE क्लॉज नहीं है। यदि आप एक गैर-खाली रिक्त उपयोगकर्ता नाम प्राप्त करने का प्रयास कर रहे हैं तो आप username='' का उपयोग कर सकते हैं।

+2

यह किसी भी उपयोगकर्ता नाम वापस नहीं लौटाएगा, केवल उन्हीं के पास जिनके पास मूल्य है। – AllisonC

+0

आह! यह समझ आता है। यह इतना नहीं है कि मैं कुछ विशिष्ट प्राप्त करने की कोशिश कर रहा हूं, स्थिति तब उत्पन्न हो रही है जब CodeIgniter क्वेरी में एक अनसेट चर को प्रतिस्थापित करता है। जवाब देने के लिए धन्यवाद! – Jon

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