使用CI update_batch()
,我无法设置增加整数db值的值。这对CI set(); update()
成功运行,但批处理是更好的选择,因为有多个更新。
我的列在名称末尾都有相同的字符,开头有不同的字符(不同年份):2014x,2015x,2016x等。
所以我创建了一个标识年份的$var
,然后通过连接添加字符串'x' and 'y'
。最后,数组中的值设置是增加1,所以我添加+1。这种连接在键中工作正常 - 也就是说我正在更新正确的列和字段。
$data = array(
array('name' => $name1,
$var.'x' => $var.'x+1'),
array('name' => $name2,
$var.'y' => $var.'y+1')
);
$this->db->update_batch('my_table', $data, 'tname');
在上述情况下,字段会更新为仅$var
的值 - 已定义的年份。
我也尝试了以下内容:
=> '{"$var.x+1"}' // places a '0' value in the field
=> $var.'x' +1 // places the value of $var
=> '$var.x+1' // places a '0' value in the field
如何使用update_batch()
按1
增加字段?
例如,此代码可以成功运行:
$this->db->where('name',$name1);
$this->db->set($var.'x',$var.'x+1',FALSE);
$this->db->update('my_table');
答案 0 :(得分:2)
您无法通过update_batch执行此操作。
在文件https://ellislab.com/codeigniter/user-guide/database/active_record.html中,它的说法是这样的:
注意:所有值都会自动转义,从而产生更安全的查询。
如何重复db->设置? e.g。
$this->db->where('name',$name1);
for($var = 2004; $var<2008;$var++) {
$this->db->set($var.'x',$var.'x+1',FALSE);
$this->db->set($var.'y',$var.'y+1',FALSE);
}
$this->db->update('my_table');