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