使用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的查询?

2 Solutions collect form web for “使用codeigniter的活动logging语法增加mysql数据库的字段”

你可以做如下给出:

 $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); 
  • 布尔值与tinyint(1)在MySQL中的布尔值
  • SQL Server中存储过程的上次运行date
  • 在一个SQL查询中插入多行?
  • MySQL:如何插入SQL查询中的每个结果的logging?
  • 为什么要通过一个耗费大量内存的大型Django QuerySet进行迭代?
  • 暂时closures约束(MS SQL)
  • 用PostgreSQL查找重复的行
  • 什么= *是什么意思?
  • 在MySQL中使用正确的或者更好的不相等的运算符
  • 在删除语句中带有别名的表variables
  • 处理inheritance与有效覆盖