“參數號無效:未定義參數”插入數據UPDATE列出VALUES時我犯了一個小錯誤。我應該輸入“:username”而不是“:alias”。我想這個問題的答案可歸功于任何想要它的人的自由統治嗎?或者我刪除這個問題?原版的我一直在使用Yii的活躍記錄模式。現在,我的項目需要為一個小事務訪問不同的數據庫。我認為Yii的DAO對此有好處。但是,我收到了一個神秘的錯誤。CDbCommand無法執行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);FYI $model->placeOfBirth應該是城市和縣的價值觀。這不是一個錯字(我只是一件傻事)。
3 回答

GCT1015
TA貢獻1827條經驗 獲得超4個贊
上面沒有提到的這個錯誤的原因是當你處理一個動態的參數數組時,如果你取消設置任何參數,你需要在傳入它們之前重新索引。這個的殘酷部分是你的錯誤日志沒有顯示索引,看起來一切都是正確的。例如:
SELECT id WHERE x = ?, y = ?, z = ?
可能產生Log:無效的參數號:參數未定義為params(“x”,“y”,“z”)
這看起來不應該拋出錯誤,但如果索引是這樣的:
0 => x, 1 => y, 4 => z
它認為最后一個參數未定義,因為它正在尋找鍵2。

DIEA
TA貢獻1820條經驗 獲得超2個贊
可能是你試圖用單引號綁定一個參數而不是讓它為你工作。
相比:
Model::model()->findAll("t.description ilike '%:filter%'", array(':filter' => $filter));
附:
Model::model()->findAll("t.description ilike :filter", array(':filter' => '%' . $filter . '%'));
- 3 回答
- 0 關注
- 965 瀏覽
添加回答
舉報
0/150
提交
取消