使用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);