一尘不染

使用codeigniter的活动记录语法的mysql数据库的增量字段

mysql

我有以下php-codeigniter脚本,该脚本尝试使用活动记录语法来增加记录的字段:

$data = array('votes' => '(votes + 1)');
$this->db->where('id', $post['identifier']);
$this->db->update('users', $data);

这将产生以下SQL:

"UPDATE用户的SET投票= '(votes + 1)' WHERE编号= '44'

哪个不会运行,但是此SQL可以满足我的要求: "UPDATE用户SET投票= (votes + 1) WHEREid = '44'“`<-请注意缺少引号(投票+ 1)

有谁知道如何用codeigniter的活动记录语法实现这种类型的查询?


阅读 271

收藏
2020-05-17

共1个答案

一尘不染

您可以执行以下操作:

$this->db->where('id', $post['identifier']);
$this->db->set('votes', 'votes+1', FALSE);
$this->db->update('users');

之所以起作用,是因为第三个(可选)FALSE参数告诉CodeIgniter不要用反引号(')保护生成的查询。这意味着生成的SQL将是:

UPDATE users SET votes= votes + 1 WHERE id= '44'

如果您注意到,则从中删除了反引号'(votes+1)',从而产生了将表决属性增加1的预期效果。

2020-05-17