不灭的焱

革命尚未成功,同志仍须努力

作者:php-note.com  发布于:2020-01-10 15:42  分类:PHP库/系统/微信  编辑

经常用Codeigniter的朋友都知道,Codeigniter的insert_batch是一个很好用的批量插入的解决方案,大数据的时候能显著提升性能。

但是也不是任何时候都好用,今天插入数据的时候一直报错,查看了半天终于发现了问题所在:

insert_batch() 插入的数据每一项都必须拥有相同的键值

例如:如果要插入一下数据的话

$data[0] = array(
    'key1' => 'val1',
    'key2' => 'val2',
    'key3' => 'val3'
);
$data[1] = array(
    'key1' => 'val1',
    'key2' => 'val2'
);

运行$this->db->insert_batch('table', $data);就会报错。

查看错误信息发现,正常的话insert_batch会生成下面的query

INSERT INTO `table` (`key1`, `key2`, `key3`) VALUES ('val1', 'val2', 'val3'), ('val1', 'val2', 'val3');

如果键值不同则会生成

INSERT INTO `table` () VALUES ('val1', 'val2', 'val3'), ('val1', 'val2', 'val3');

键值为空,所以会报错。