【问题标题】:How to use batch update/insert sql using codeigniter?如何使用 codeigniter 使用批量更新/插入 sql?
【发布时间】:2018-01-31 01:47:14
【问题描述】:

在这个例子中..如何简化和加快数据库中数据的更新和插入?

//if count($arr_list['sample_element1'] is 500+++ or more records

$i =0;
while ($i < count($arr_list['sample_element1'])) {

$update_db= array('column1' => $arr_list['sample_element1'][$i],'column2' => $arr_list['sample_element2'][$i]);

$this->db->update('sample_table',$update_db);

$i++;
}

如果要保存的记录超过 1000 条数据...完成该过程大约需要一些时间..提前感谢.. =)

【问题讨论】:

标签: php sql database codeigniter sql-update


【解决方案1】:

使用batch_update

$this->db->update(table_name,array,where_key_word);

这里 table_name = 你的表名

and array = 包含多个关联数组的数组

and where_key_word = 应在 where 条件下使用的列

另请阅读this question thread for more information

一起批量更新数千个元素可能会产生性能问题。最好将它们拆分并以较小的批量更新。还可以使用事务,以便如果任何更新失败,整个更新过程可以回滚

【讨论】:

    【解决方案2】:

    接受@AL-zami 的回答,您正在寻找这个

    $data = [];
    $this->db->trans_start();
    foreach($arr_list as $item)
    {
        $data[] = [
            'column1' => $item['element1'],
            'column2' => $item['element2'],
            'column3' => $item['element3']
        ];
    }
    $this->db->update_batch('mytable', $data, 'column1');
    $this->db->trans_complete();
    

    其中 'column1' 是用于“WHERE”条件的列。

    【讨论】:

    • 是的,是的..我有同样的想法......但是如果你有两个或更多的 where 子句怎么办?我必须添加另一个这样的参数吗? $this->db->update_batch('mytable', $data, 'column1','column2','column3');
    • 不,这行不通。 update_batch() 不会接受。尝试使用另一个$this-&gt;db-&gt;where('field', $value) 电话。但我认为这不会奏效..
    猜你喜欢
    • 2011-09-29
    • 2011-04-15
    • 2020-12-01
    • 2020-12-13
    • 2011-11-13
    • 1970-01-01
    • 2014-02-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多