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