任何人都可以将普通的mysql查询转换为codeigniter更新结构。
UPDATE game_rounds
SET from_score = CASE WHEN from_id = 2 THEN 65 ELSE from_score END,
to_score = CASE WHEN to_id = 2 THEN 65 ELSE to_score END
WHERE round_id=5
我尝试过update_batch但无法找到正确的解决方案。
提前致谢
答案 0 :(得分:1)
$this->db
->set('from_score', 'CASE WHEN from_id = 2 THEN 65 ELSE from_score END', FALSE)
->set('to_score', 'CASE WHEN to_id = 2 THEN 65 ELSE to_score END', FALSE)
->where('round_id', 5)
->update('game_rounds');
$ this-> db-> set()允许您设置插入或更新的值。 它可以用来代替将数据数组直接传递给插入或更新函数。
可选的第三个参数($ escape),如果设置为FALSE,将阻止数据被转义。
答案 1 :(得分:0)
这是一种简单的方法
$data['from_score'] = 'CASE WHEN from_id = 2 THEN 65 ELSE from_score END';
$data['to_score'] = 'CASE WHEN to_id = 2 THEN 65 ELSE to_score END ';
$this->db->where('round_id',5);
$this->db->update('game_rounds',$data);
之后运行echo $this->db->last_query()
以查看它是否生成了正确的查询字符串。