【问题标题】:Codeigniter IFNULL in set() mysql activerecordset() mysql activerecord 中的 Codeigniter IFNULL
【发布时间】:2014-04-16 09:42:14
【问题描述】:

表xyz中有一个列abc,其数据类型为int,默认值为null。我们假设表中存在 abc 字段的值为 null 的特定行。

我希望通过多次运行查询将 abc 更改为“它的先前值 + 某个其他值”。第一次更新列时出现问题,因为它的值为空。

将 null 添加到任何内容都会返回 null,因此这不起作用:

$this->db->set('abc', $value);

我尝试改用这个:

$this->db->set('abc', "IFNULL(abc, 0) + $value");

但这会产生:

UPDATExyzSETabc= 'IFNULL(abc, 0) + value'

但所需的查询是:

UPDATExyzSETabc= IFNULL(abc, 0) + value (要设置的值不带引号)

这可以实现吗?

这也不起作用:

$this->db->set('abc = IFNULL(abc, 0) + $value');

【问题讨论】:

    标签: mysql codeigniter activerecord


    【解决方案1】:

    您可以尝试将第三个参数添加到 FALSe(未转义值)

    $this->db->set('abc', 'IFNULL(abc, 0) + $value', FALSE);
    

    或许

    $this->db->set('abc', 'IFNULL(abc, 0) + '.$value.'', FALSE);
    

    【讨论】:

      猜你喜欢
      • 2013-11-03
      • 1970-01-01
      • 1970-01-01
      • 2023-03-09
      • 2011-03-14
      • 2011-01-09
      • 1970-01-01
      • 2013-03-02
      • 2011-06-01
      相关资源
      最近更新 更多