问题背景
整理省市区街道四级联动时, 查询出来街道的数据 (4w多条), 一次性插入数据时, 出现了这个错误;
它的意思是: 常规错误:1390预处理语句包含太多占位符. 说白了就是SQL语句太长了, 无法插入...
解决思路
错误的解决思路
foreach 循环一个个的插入, 这样是不对的, 会严重影响程序的性能!!! 会严重影响程序的性能!!! 会严重影响程序的性能!!!正确的解决思路
分片处理, 分多次插入 可以使用 array_chunk() 函数
public function insertData($arr)
{
$chunk_res = [];
$chunk_list = array_chunk($arr, 1000);
foreach ($chunk_list as $new_list){
$chunk_res[] = DB::table('region')->insert($new_list);
}
return $chunk_res;
}
这样就解决了 MySQL 报的错误, 数据也完整插入!