【问题标题】:How to use codeigniter table update using mysql syntax like if condition?如何使用 mysql 语法(如 if 条件)使用 codeigniter 表更新?
【发布时间】:2016-03-17 12:14:34
【问题描述】:

我正在尝试使用 mysql IF 条件更新记录,是否支持因为记录不更新

$this->db->update(
    'elections',
        array(
            'status'=>'IF(status=="Active","Inactive","Active")'
        ),
        array(
            'election_id'=>$election_id
        )
    );

我在打印时收到以下查询:

UPDATE `elections` SET `status` = 'IF(status==\"Active\",\"Inactive\",\"Active\")' WHERE `election_id` = '8'

【问题讨论】:

    标签: php mysql sql database codeigniter


    【解决方案1】:

    CodeIgniter 似乎逃脱了您的 IF 语句,但您可以将其用作字符串:

    $this->db->query('UPDATE `elections` SET `status`= IF(`position`=?,?,?) WHERE `election_id` = ?', array('Active','Inactive','Inactive', $election_id));
    

    或者
    您可以禁用自动转义功能(将set方法的第三个参数设置为false):

    $this->db->set('status', "IF(status='Active','Inactive','Active')", false)
    ->where(array('id' => $election_id))
    ->update('elections');
    

    (请记住:在这种情况下,如果您的参数可以包含不受信任的值,您应该转义它们。例如:$this->db->e​​scape)

    【讨论】:

    • 我的问题是关于 db->update 方法,有没有办法使用 update 方法执行相同的查询?编写查询是乱码
    【解决方案2】:

    在状态后使用一个等号 (=):

    $this->db->update(
        'elections',
            array(
                "status"=>"IF(status='Active','Inactive','Active')"
            ),
            array(
                'election_id'=>$election_id
            )
        );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-03
      • 1970-01-01
      • 2013-01-09
      • 2011-03-30
      • 1970-01-01
      • 2012-10-31
      • 1970-01-01
      相关资源
      最近更新 更多