Codeigniter中insert_batch的一个小坑
经常用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');
键值为空,所以会报错。