【问题标题】:Perform arithmetic within MySQL UPDATE query formed using CodeIgniter's Active Record class在使用 CodeIgniter 的 Active Record 类形成的 MySQL UPDATE 查询中执行算术
【发布时间】:2012-12-04 14:51:46
【问题描述】:

我正在使用$this->db->update(); 创建一个更新查询,它将存储在变量$amount 中的值添加到列中的值count。我的函数调用当前如下所示:

$data = array('count' => 'count + '.$amount);

$this->db->where('id', $item_id);
$this->db->update('items', $data);

但是,这会生成以下损坏的 SQL:

UPDATE `items` SET `count` = 'count + 2' WHERE `id` =  '2'

有没有办法生成不带引号的 SET 子句 count + 2

【问题讨论】:

  • 你试过这个answer吗?
  • 正如Maxime所说,这个问题是stackoverflow.com/questions/2075984/…的副本
  • 谢谢,如果没有无用的标题,我可能会找到该解决方案。当我给它一个新的时,我被授予了“挖掘机”徽章。希望现在其他人不必像我一样遇到同样的麻烦。

标签: mysql codeigniter activerecord sql-update


【解决方案1】:

感谢Maxime Morin,让我走上了正轨。根据CodeIgniter Documentation,您可以通过将可选的$escape 参数设置为FALSE 来创建不带引号的“set”子句。因此,我的问题的解决方案是:

$this->db->set("count", "count + $amount", FALSE); 
$this->db->where("id", $item_id);
$this->db->update("items", $data);

【讨论】:

    【解决方案2】:

    这是我在找到可接受的解决方案之前使用的解决方法

    $query = $this->db->query("UPDATE `items` SET `count` = `count` + $amount WHERE `id` = $item_id");
    

    【讨论】:

      猜你喜欢
      • 2017-03-30
      • 2011-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-15
      • 2012-02-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多