【问题标题】:Error in yii insert statement SQLSTATE[HY093]: Invalid parameter number: parameter was not definedyii insert 语句出错 SQLSTATE[HY093]: Invalid parameter number: parameter was not defined
【发布时间】:2015-07-01 07:46:32
【问题描述】:

在 Yii 中向表中插入数据时,出现此错误:

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).

下面是我的代码:

$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);

【问题讨论】:

  • 请注意帖子的格式。如果您的问题难以阅读,您将得不到任何答案。我帮你修好了。
  • SQL 语句中的参数名称和它们的表示不匹配。 (:Name vs. :name, :Mobilenmber vs :mobile_number, ...) 让他们匹配。

标签: php mysql yii


【解决方案1】:

您的请求有 2 个错误。正如亚历山大所说,您的参数不匹配(所有期望电子邮件)。并且有拼写错误。

这个请求/参数应该可以工作:

$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']);

【讨论】:

  • 我是 yii 新手,所以我犯了这个错误。我想让它更清楚,在插入语句值字段中应该有请求参数名称或 sql 表列名称?
  • @user3381968 不,我们是来帮忙的;)我希望它能解决你的问题。
  • ,在这些更改和执行我的代码之后不,现在我得到另一个错误:(
  • @user3381968 我想念您之前的问题:当您使用 : 时,您正在调用参数。因此,您的参数(数组中的文本)和 : 之后的文本必须相同。
  • 错误还是一样?
【解决方案2】:

修复参数名称以匹配 select 语句中的参数名称,尝试使用 queryAll 执行此操作,如下所示:

$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);

编辑

我敢打赌问题出在 name 列上,它是一个 MYSQL 关键字 name,请将列名更改为其他名称并尝试一下

【讨论】:

  • 只有当我将数据修改为两列后,我的 cod 才能正常工作,一旦我将其修改为两列,它就会开始抛出以下错误:语法错误或访问冲突:1064 您的 SQL 中有错误句法;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行使用接近 'desc) 值 ('Testing','Ignore')' 的正确语法。执行的 SQL 语句是:插入员工 (name,desc) 值(:name,:desc)
  • 可以记录执行的查询吗?或者尝试从 db 类中打印构建的查询??
猜你喜欢
  • 2013-03-19
  • 2018-04-22
  • 1970-01-01
  • 2023-03-18
  • 1970-01-01
  • 2019-10-08
  • 1970-01-01
  • 2015-07-07
  • 1970-01-01
相关资源
最近更新 更多