经常用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');

键值为空,所以会报错。

上一篇: 把bootstrap4的导航下拉菜单触发方式改为鼠标浮动触发
下一篇: Centos7重置Mysql8的root密码