我想使用codeigniter活动记录实现一个SQL语句。
UPDATE tags SET usage = usage+1 WHERE tag="java";
如何使用Codeigniter活动记录实现这一点?
js81xvg61#
来自文档:set()还将接受可选的第三个参数($escape),如果设置为FALSE,则该参数将防止数据转义。因此,这应该可以将increment语句直接传递到数据库:
set()
$escape
FALSE
$this->db->set('usage', 'usage+1', FALSE); $this->db->where('tag', 'java'); $this->db->update('tags');
因为它不是转义的,所以如果你使用变量而不是固定的数字,应该事先验证它是否是数字。
wqnecbli2#
你也可以用这样的方法
$data = array('usage' => 'usage+1', *other columns*); $this->db->where('tag', 'java'); $this->db->update('tags', $data);
UPDATE:未传递$data以进行更新
jgzswidk3#
我发现有时候直接编写SQL比让Active Record为我构建SQL更简单。
$sql = 'update tags set usage=usage+1 where tag=?'; $this->db->query($sql, array($tag));
3条答案
按热度按时间js81xvg61#
来自文档:
set()
还将接受可选的第三个参数($escape
),如果设置为FALSE
,则该参数将防止数据转义。因此,这应该可以将increment语句直接传递到数据库:
因为它不是转义的,所以如果你使用变量而不是固定的数字,应该事先验证它是否是数字。
wqnecbli2#
你也可以用这样的方法
UPDATE:未传递$data以进行更新
jgzswidk3#
我发现有时候直接编写SQL比让Active Record为我构建SQL更简单。