दिलचस्प पोस्ट
जावा में एनएएन को 0 में कनवर्ट करें क्यों "System.out.println" एंड्रॉइड में काम नहीं करता है? JQuery के उपयोग से मैं एक तालिका की एक पंक्ति को कैसे देख सकता हूँ (element.scrollintoView)? परिपत्र संदर्भ मेमोरी लीक कारण? अगर PHP में mod_rewrite सक्षम है तो कैसे जांचें? एंड्रॉइड जावा में पीडीएफ पेज को बिटमैप में कनवर्ट करें एंड्रॉइड कैनवास: छवि पर पारदर्शी सर्कल बनाएं सी # ऑडियो लाइब्रेरी सॉर्ट किए गए मैट्रिक्स पर चयन एल्गोरिदम Php स्क्रिप्ट के दोहरे उद्धरण गूंज डेटा के लिए मतदान करते समय, एंड्रॉइड, नेटवर्क में परिवर्तन (जीपीआरएस से वाई-फाई और उपाध्यक्ष के विपरीत) को कैसे नियंत्रित करें घोंसले के शिकार एनजी-कोयले जेएस में विचार एसक्यूएल – 2 दशमलव स्थानों पर बंद गोल दो वैकल्पिक पैरामीटरों के साथ एएसपी एमवीसी रूटिंग जावा में जार से एक फ़ाइल कैसे पढ़ा जाए?

"अवैध पैरामीटर संख्या: पैरामीटर परिभाषित नहीं किया गया था" डेटा डालने

अद्यतन करें

मूल्यों को सूचीबद्ध करते समय मैं एक छोटी सी गलती कर रहा था मुझे ": उपयोगकर्ता नाम" रखना चाहिए और नहीं ": अन्य नाम" मुझे लगता है कि इस प्रश्न का उत्तर क्रेडिट किसी के लिए स्वतंत्र है जो इसे चाहता है? या मैं सवाल हटाना?

मूल

मैं थोड़ी देर के लिए Yii के सक्रिय रिकॉर्ड पैटर्न का उपयोग कर रहा हूं अब, मेरे परियोजना को एक छोटे लेनदेन के लिए एक अलग डाटाबेस तक पहुंचने की आवश्यकता है। मैंने सोचा था कि यी के डीएओ इस के लिए अच्छा होगा। हालांकि, मुझे एक गुप्त त्रुटि मिल रही है

सीडीबी कॉमांड SQL कथन निष्पादित करने में विफल रहा है: SQLSTATE [HY093]: अमान्य पैरामीटर संख्या: पैरामीटर परिभाषित नहीं किया गया था

यहां मेरा कोड है:

public function actionConfirmation { $model_person = new TempPerson(); $model = $model_person->find('alias=:alias',array(':alias'=>$_GET['alias'])); $connection=Yii::app()->db2; $sql = "INSERT INTO users (username, password, ssn, surname , firstname, email, city, country) VALUES(:alias, :password, :ssn, :surname , :firstname, :email, :city, :country)"; $command=$connection->createCommand($sql); $command->bindValue(":username", $model->alias); $command->bindValue(":password", substr($model->ssn, -4,4)); $command->bindValue(":ssn", $model->ssn); $command->bindValue(":surname", $model->lastName); $command->bindValue(":firstname", $model->firstName); $command->bindValue(":email", $model->email); $command->bindValue(":city", $model->placeOfBirth); $command->bindValue(":country", $model->placeOfBirth); $command->execute(); $this->render('confirmation',array('model'=>$model)); } 

यह निम्न क्वेरी तैयार करता है (जैसा कि एप्लिकेशन लॉग पर देखा गया है):

 INSERT INTO users (username, password, ssn, surname, firstname, email , city, country) VALUES(:alias, :password, :ssn, :surname, :firstname, :email, :city, :country); 

$model->placeOfBirth शहर और काउंटी दोनों मूल्यों में होना चाहिए। यह एक टाइपो नहीं है (बस एक मूर्खतापूर्ण बात मुझे करना है)।

Solutions Collecting From Web of ""अवैध पैरामीटर संख्या: पैरामीटर परिभाषित नहीं किया गया था" डेटा डालने"

सिर्फ एक जवाब देने के लिए – क्योंकि यह त्रुटि बहुत आम है – यहां कुछ कारण हैं:

1) इस :parameter नाम गलती से बाइंड से मेल नहीं खाती (टाइपो?)। यह वही है जो यहाँ हुआ है उसके पास है :alias एसक्यूएल बयान में :alias , लेकिन बाध्य :username तो जब परम बाइंडिंग की कोशिश की गई, तो Yii / PDO को नहीं मिल सका :username एसक्यूएल स्टेटमेंट में :username , जिसका अर्थ यह "एक पैरामीटर शॉर्ट" था और एक त्रुटि फेंक दी।

2) पूरी तरह से एक पैरामीटर के लिए bindValue() जोड़ने की भूल। ये अन्य $critera तरह Yii में ऐसा करना आसान है जैसे $critera , जहां आपके पास कोई सरणी या पैरामीटर है ( $criteria->params = array(':bind1'=>'test', ':bind2'=>'test) )।

3) सीडीटाप्रोवाइडर पेजिंग और / या छंटनी के साथ विचित्र टकराव जब together उपयोग करते together और joins । इस को चिह्नित करने के लिए कोई विशिष्ट, आसान तरीका नहीं है, लेकिन सीडीटाप्रदाता के जटिल प्रश्नों का उपयोग करते समय मेरे पास अजीब समस्याएं हो रही हैं, जिनकी मापदंडों को हटा दिया गया है और यह त्रुटि हो रही है।

Yii में इन समस्याओं का निवारण करने का एक बहुत ही उपयोगी तरीका है कि आपकी कॉन्फ़िग फाइल में पैरामीटर लॉगिंग को सक्षम करना है । इसे अपनी config फ़ाइल में अपने db सरणी में जोड़ें:

 'enableParamLogging'=>true, 

और सुनिश्चित करें कि आपके log अनुभाग में CWebLogRoute मार्ग सेट है यह उस प्रश्न को प्रिंट करेगा जो दिया गया था और त्रुटि, और वह सभी पैरामीटर जो बाइंड करने का प्रयास कर रहा था। सुपर सहायक!

हो सकता है कि आप अपने लिए काम करने के बजाय एकल उद्धरण के भीतर एक परम बाध्य करने की कोशिश कर रहे हों।

की तुलना करें:

 Model::model()->findAll("t.description ilike '%:filter%'", array(':filter' => $filter)); 

साथ में:

 Model::model()->findAll("t.description ilike :filter", array(':filter' => '%' . $filter . '%')); 

मेरे लिए इस त्रुटि का एक कारण यह नहीं है कि आप पैरामीटरों की गतिशील सरणी के साथ काम कर रहे हैं, यदि आप किसी भी पैरामीटर को अनसेट नहीं करते हैं, तो आपको उनको पास करने से पहले उन्हें पुन: जानना होगा। इस का क्रूर भाग यह है कि आपका त्रुटि लॉग नहीं है अनुक्रमित दिखें, ऐसा लगता है कि सब कुछ ठीक है। उदाहरण के लिए:

 SELECT id WHERE x = ?, y = ?, z = ? 

लॉग उत्पन्न कर सकते हैं: अमान्य पैरामीटर संख्या: पैरामीटर पैरामीटर के साथ परिभाषित नहीं किया गया था ("x", "y", "z")

ऐसा लगता है कि यह कोई त्रुटि नहीं फेंकना चाहिए, लेकिन यदि अनुक्रमित कुछ ऐसा है:

 0 => x, 1 => y, 4 => z 

यह अंतिम पैरामीटर को अपरिभाषित मानता है क्योंकि यह कुंजी 2 की तलाश में है