केवल उत्तर देने के लिए - क्योंकि यह त्रुटि बहुत सामान्य है - यहाँ कुछ कारण दिए गए हैं:
1) :parameter
नाम गलती से बाइंड से मेल नहीं खाता (टाइपो?) यहाँ यही हुआ। उसके पास :alias
. है SQL कथन में, लेकिन बाध्य :username
. इसलिए जब परम बाइंडिंग का प्रयास किया गया, तो Yii/PDO को :username
. नहीं मिला sql स्टेटमेंट में, जिसका अर्थ है "एक पैरामीटर छोटा" और एक त्रुटि हुई।
2) bindValue()
जोड़ना पूरी तरह से भूल जाना एक पैरामीटर के लिए। Yii अन्य निर्माणों जैसे $critera
. में ऐसा करना आसान है , जहां आपके पास एक सरणी या पैरा है ($criteria->params = array(':bind1'=>'test', ':bind2'=>'test)
)।
3) together
का उपयोग करते समय CDataProvider पेजिनेशन और/या सॉर्टिंग के साथ अजीब विरोध और joins
. इसका वर्णन करने का कोई विशिष्ट, आसान तरीका नहीं है, लेकिन CDataProviders में जटिल प्रश्नों का उपयोग करते समय मेरे पास अजीब मुद्दे हैं जिनमें पैरामीटर गिर रहे हैं और यह त्रुटि हो रही है।
Yii में इन समस्याओं का निवारण करने का एक बहुत ही उपयोगी तरीका है पैरामीटर लॉगिंग सक्षम करना
आपकी कॉन्फ़िगरेशन फ़ाइल में। इसे अपने db
. में जोड़ें आपकी कॉन्फ़िग फ़ाइल में सरणी:
'enableParamLogging'=>true,
और सुनिश्चित करें कि CWebLogRoute
मार्ग आपके log
. में सेट किया गया है खंड। यह उस क्वेरी को प्रिंट करेगा जो दी गई थी और त्रुटि, और सभी पैरामीटर जो इसे बांधने का प्रयास कर रहे थे। बहुत मददगार!