经常用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');
键值为空,所以会报错。