繁体   English   中英

CI update_batch; 将变量和字符串连接并增加为数组值

[英]CI update_batch; Concatenate and increment variable and string as array value

使用CI update_batch() ,我无法设置一个增加整数db值的值。 这适用于CI set(); update() 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');

你不能通过update_batch来做到这一点。

在文档https://ellislab.com/codeigniter/user-guide/database/active_record.html中 ,它的说法如下:

注意:所有值都会自动转义,从而生成更安全的查询。

怎么样重复db-> set? 例如

$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');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM