【问题标题】:SQL Update in YiiYii 中的 SQL 更新
【发布时间】:2011-11-27 22:37:36
【问题描述】:

鉴于我的控制器中的以下 UPDATE 查询

$connection = yii::app()->db;
$sql = "UPDATE list SET Status = 'R' WHERE ".$_POST['ListId']."=".$_POST['RListId'];
$command=$connection->createCommand($sql);
$command->execute();

这会将每条记录更改为Status = 'R',而不仅仅是具有匹配参数的记录。 $_POST['ListId']$_POST['RListId'] 正是我需要的,我已经通过控制器中的 var_dump 验证了它们。

我的查询有什么问题?

【问题讨论】:

  • 这两个变量是什么? (除了是你需要的)?
  • Hogan 它们是整数的(请参阅对 Adrian Cornish 答案的评论)。无论如何,我试图只更新 A=B 的记录,无论它们是什么。

标签: sql yii


【解决方案1】:

您的 where 子句中没有字段名称。所以它可能是你有 1=1 的地方,它对每条记录都评估为真。

我猜你想要这样的东西

Yii::app()->db
    ->createCommand("UPDATE list SET Status = 'R' WHERE ListId=:ListId OR RListID=:RListID")
    ->bindValues(array(':ListId' => $_POST['ListId'], ':RListID' => $_POST['RListId']))
    ->execute();

【讨论】:

  • Adrian Cornish 感谢您的回复。是的,这些值是整数 [记录的 ID]。因此,如果我要更新 ListId = 1 的给定表中的记录,我只希望在另一个表中更新该关联记录 (RListId) list
  • 我回去重读了您的答案,是的,这指出了我的问题...在子句中添加了一个字段名称,并且可以正常工作。感谢您的帮助。
  • 请不要这样编码,此查询对 SQL 注入开放。
猜你喜欢
  • 2019-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多