user3381968
user3381968

Reputation: 43

Error in yii insert statement SQLSTATE[HY093]: Invalid parameter number: parameter was not defined

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

Answers (2)

KAD
KAD

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

Pierre-Alexandre Moller
Pierre-Alexandre Moller

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

Related Questions