使用命令创建不工作在Yii中更新查询

时间:2014-06-11 14:20:28

标签: php mysql sql yii

我正在尝试从Yii Framework更新表,但收到错误

我的代码如下:

$updatebrick = Yii::app()->db->createCommand("update link_bricks SET parent_id=". $v[parent_id] ." where child_id=". $k[micro_brick_id] ." ORDER BY id ASC LIMIT 1")->queryAll();

错误:

CDbCommand failed to execute the SQL statement: SQLSTATE[HY000]: General error. The SQL statement executed was: update link_bricks SET parent_id=1963 where child_id=15793 ORDER BY id ASC LIMIT 1 

1 个答案:

答案 0 :(得分:2)

您应该使用execute功能而不是queryAllqueryAll用于SQL(SELECT语句),execute用于DML(UPDATEINSERTDELETE语句。 见docs

您还应该考虑使用框架绑定参数,而不是注入它们(出于安全和理智的原因)。

我建议:

$sql='
  UPDATE link_bricks 
  SET parent_id=:parent_id 
  WHERE child_id=:child_id 
  ORDER BY id ASC
  LIMIT 1
';

$command=Yii::app()->db->createCommand($sql);
$update=$command->execute(array(
  'parent_id'=>$v[parent_id],
  'child_id'=>$k[child_id],
);