如何使用mysql语法如if条件使用codeigniter表更新?

时间:2016-03-17 12:14:34

标签: php mysql sql database codeigniter

我正在尝试使用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'

2 个答案:

答案 0 :(得分:2)

似乎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-> escape)

答案 1 :(得分:0)

状态后使用一个相等的(=)符号:

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