使用codeigniter的活动logging语法增加mysql数据库的字段

我有以下php-codeigniter脚本,它尝试使用主动logging语法增加logging的字段:

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

这会产生以下SQL:

"UPDATE users SET votes = '(votes + 1)' WHERE id = '44'

哪个不运行,但这个SQL确实做我在找什么: "UPDATE用户SET= (votes + 1) WHERE id = '44' ”`< – 注意缺乏引号(票+ 1 )

有谁知道如何使用codeigniter的活动logging语法来实现这种types的查询?

你可以做如下给出:

 $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的预期效果。

 $data = array('votes' => 'votes + 1'); foreach ($data as $key=>$val) { $this->db->set($key, $val, FALSE); } $this->db->where('id', $post['identifier']); $this->db->update('users', $data);