【问题标题】:Update Query in Yii using Command Create not working使用命令创建更新 Yii 中的查询不起作用
【发布时间】:2014-06-11 14:20:28
【问题描述】:

我正在尝试从 Yii 框架更新一个表,但出现错误

我的代码如下:

$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 

【问题讨论】:

  • @ramamoorthy_villi ORDER BY 和 LIMIT 允许在更新中看到docs
  • 直接从phpmyadmin执行时效果很好
  • 而不是 ->queryAll();使用 ->query();
  • @ramamoorthy_villi 不;使用execute

标签: php mysql sql yii


【解决方案1】:

您应该使用execute 函数而不是queryAll。 queryAll 用于 SQL(SELECT 语句),execute 用于 DML(UPDATE,INSERT,DELETE 语句)。 见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],
);

【讨论】:

  • @Himanshu 没问题,很乐意提供帮助。如果你能接受这个答案,那就太好了!
  • opps,对不起 :) 我也会投赞成票,但在这里没有那么大的声誉
猜你喜欢
  • 1970-01-01
  • 2020-01-29
  • 1970-01-01
  • 1970-01-01
  • 2015-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多