使用codeigniter将数据库中字段的值更新为1

vql8enpb  于 2023-02-06  发布在  其他
关注(0)|答案(3)|浏览(174)

我想使用codeigniter活动记录实现一个SQL语句。

UPDATE tags SET usage = usage+1 WHERE tag="java";

如何使用Codeigniter活动记录实现这一点?

js81xvg6

js81xvg61#

来自文档:
set()还将接受可选的第三个参数($escape),如果设置为FALSE,则该参数将防止数据转义。
因此,这应该可以将increment语句直接传递到数据库:

$this->db->set('usage', 'usage+1', FALSE);
$this->db->where('tag', 'java');
$this->db->update('tags');

因为它不是转义的,所以如果你使用变量而不是固定的数字,应该事先验证它是否是数字。

wqnecbli

wqnecbli2#

你也可以用这样的方法

$data = array('usage' => 'usage+1', *other columns*);
$this->db->where('tag', 'java');
$this->db->update('tags', $data);

UPDATE:未传递$data以进行更新

jgzswidk

jgzswidk3#

我发现有时候直接编写SQL比让Active Record为我构建SQL更简单。

$sql = 'update tags set usage=usage+1 where tag=?';
$this->db->query($sql, array($tag));

相关问题