कोडइग्निटर तैयार वक्तव्यों का समर्थन नहीं करता है। यदि आप सीआई के डेटाबेस वर्ग के लिए स्रोत कोड को देखते हैं, तो आप देखेंगे कि वे केवल पारित सरणी के डेटा के साथ प्रश्न चिह्नों को बदलकर बाइंडिंग को हल करते हैं:
वे केवल अज्ञात प्लेसहोल्डर्स के साथ क्वेरी बाइंडिंग का समर्थन करते हैं। देखें http://ellislab.com/codeigniter/user-guide/database/ query.html
<ब्लॉकक्वॉट>क्वेरी बाइंडिंग
बाइंडिंग आपको सिस्टम को आपके लिए प्रश्नों को एक साथ रखने की अनुमति देकर आपके क्वेरी सिंटैक्स को सरल बनाने में सक्षम बनाती है। निम्नलिखित उदाहरण पर विचार करें:
$sql = "SELECT * FROM some_table WHERE id = ? AND status = ? AND author = ?";
$this->db->query($sql, array(3, 'live', 'Rick'));
क्वेरी में प्रश्न चिह्न स्वचालित रूप से क्वेरी फ़ंक्शन के दूसरे पैरामीटर में सरणी के मानों से बदल दिए जाते हैं।
और http://ellislab.com/forums/viewthread/105112/#528915
<ब्लॉकक्वॉट>भले ही सीआई तैयार बयानों का समर्थन नहीं करता है, यह क्वेरी बाइंडिंग का समर्थन करता है। तैयार बयानों के साथ आपको कुछ प्रकार के तैयार() फ़ंक्शन और फिर कुछ प्रकार के निष्पादन() फ़ंक्शन को कॉल करना होगा। क्वेरी बाइंडिंग के साथ, आपको केवल एक फ़ंक्शन को कॉल करना होगा और यह मूल रूप से वही काम करता है। इस वजह से, मुझे तैयार बयानों से बेहतर क्वेरी बाइंडिंग पसंद है।
एक विचार पर, ?
करने के लिए :foo
केवल अज्ञात से नामांकित बाइंडिंग में बदल रहा है (जो सीआई स्पष्ट रूप से या तो समर्थन नहीं करता है)। सिर्फ इसलिए कि आप या तो उपयोग करते हैं या इसका मतलब यह नहीं है कि आप बयान तैयार कर रहे हैं।