经常用Codeigniter的朋友都知道,Codeigniter的insert_batch是一个很好用的批量插入的解决方案,大数据的时候能显著提升性能。
但是也不是任何时候都好用,今天插入数据的时候一直报错,查看了半天终于发现了问题所在:
用 insert_batch() 插入的数据每一项都必须拥有相同的键值
例如:如果要插入一下数据的话
1 2 3 4 5 6 7 8 9 | $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
1 | INSERT INTO `table` (`key1`, `key2`, `key3`) VALUES ( 'val1' , 'val2' , 'val3' ), ( 'val1' , 'val2' , 'val3' ); |
如果键值不同则会生成
1 | INSERT INTO `table` () VALUES ( 'val1' , 'val2' , 'val3' ), ( 'val1' , 'val2' , 'val3' ); |
键值为空,所以会报错。