php - CI更新批处理;连接并递增变量和字符串作为数组值

标签 php mysql arrays codeigniter sql-update

使用 CI update_batch(),我无法在递增整数 db 值的地方设置一个值。这适用于 CI set(); update(),但批处理是更好的选择,因为有多个更新。

我的列在名称末尾都有相同的字符,在开头有不同的字符(不同年份):2014x、2015x、2016x 等。 所以我创建了一个标识年份的 $var,然后我通过连接添加字符串 'x' 和 '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 ,它是这样说的:

Note: All values are escaped automatically producing safer queries.

只是重复 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');

关于php - CI更新批处理;连接并递增变量和字符串作为数组值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31816009/

相关文章:

c - 为什么我的 C 程序不能正常工作?

c++ - (C/C++) 字符数组的大小

php - 如何在钩子(Hook)形式更改中定义的提交处理程序中获取节点 ID

php - 带有非空变量的 where 子句

mysql - 当外键不是 ID 时关联不起作用

php - Laravel 简单计数数据库行回显

java - 如何通过单击增加数组位置的按钮来在 textView 上的数组中设置文本

php - 将 IAM 角色与 PHP SDK 结合使用时出现问题

php - Magento,将增值税号码添加到账单地址

php inside php with $_session echo