Reputation: 43
While inserting data into a table in Yii, I am getting this error:
CDbCommand failed to execute the SQL statement:
SQLSTATE[HY093]: Invalid parameter number: parameter was not defined.
The SQL statement executed was: insert into user_feedback (name,
desc,email,mobilenumber) values (:Name, :Desc,:email,:Mobilenmber).
below is my code :
$sql = "insert into user_feedback (name, desc,email,mobilenumber) values (:Name, :Desc,:email,:Mobilenmber)";
$parameters = array(":name"=>$_POST['Name'], ':desc' => $_POST['Desc'],':email'=>$_POST['email'],':mobile_number'=>$_POST['Mobile_nmber']);
Yii::app()->db->createCommand($sql)->execute($parameters);
Upvotes: 2
Views: 503
Reputation: 11122
Fix the parameter name to match the ones in select statement, try executing this using queryAll as follows :
$sql = "insert into user_feedback (name, desc,email,mobilenumber) values (:Name, :Desc,:Email,:Mobilenmber)";
$parameters = array(
":Name"=>$_POST['Name'], // names match paremeters in select
':Desc' => $_POST['Desc'], // names match paremeters in select
':Email'=>$_POST['email'], // names match paremeters in select
':Mobilenmber'=>$_POST['Mobile_number']); // names match paremeters
// in select plus there is a problem
// with with key (typo) Mobile_number and not Mobile_nmber (unless you defined it this way on purpose !!!)
$command = Yii::app()->db->createCommand($sql);
$result = $command->queryAll(true,$parameters);
Edit
I bet the issue is really with the name
column, it is a MYSQL keyword name, please change the column name to something else and try it out
Upvotes: 1
Reputation: 2354
You have 2 mistakes on your request. As Alexander said, your parameters didn't match (all expect email). And there is typo mistake.
This request/param should work :
$sql = "insert into user_feedback (name, desc,email,mobilenumber) values (:name, :desc,:email,:mobile_number)";
$parameters = array(":name"=>$_POST['Name'], ':desc' => $_POST['Desc'],':email'=>$_POST['email'],':mobile_number'=>$_POST['Mobile_number']);
Upvotes: 1