为了账号安全,请及时绑定邮箱和手机立即绑定

请问“参数号无效:未定义参数”插入数据

请问“参数号无效:未定义参数”插入数据

PHP
子衿沉夜 2019-12-03 14:34:08
“参数号无效:未定义参数”插入数据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 回答

?
万千封印

TA贡献1891条经验 获得超3个赞

上面没有提到的这个错误的原因是当你处理一个动态的参数数组时,如果你取消设置任何参数,你需要在传入它们之前重新索引。这个的残酷部分是你的错误日志没有显示索引,看起来一切都是正确的。例如:

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

可能产生Log:无效的参数号:参数未定义为params(“x”,“y”,“z”)

这看起来不应该抛出错误,但如果索引是这样的:

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

它认为最后一个参数未定义,因为它正在寻找键2。




查看完整回答
反对 回复 2019-12-03
?
森林海

TA贡献2011条经验 获得超2个赞

可能是你试图用单引号绑定一个参数而不是让它为你工作。

相比:

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

附:

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


查看完整回答
反对 回复 2019-12-03
  • 3 回答
  • 0 关注
  • 310 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信