使用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); 
  • MySQL查询String包含
  • 跳过复制到磁盘mysql上的tmp表
  • SQL Server将CSV分成多行
  • SQL Server 2008中“WHERE”子句中的“CASE”语句
  • 是否有一个Oracle SQL查询将多个行聚合成一行?
  • 增加SQL命令的超时时间
  • SQL Server:如何从information_schema获取外键引用?
  • SQL到LINQ工具
  • 将数据库从单用户模式设置为多用户
  • 检查连续x天 - 给定数据库中的时间戳
  • Postgresql:检查模式是否存在?