前端传输过来的json数组$data包含海量数据,需要批量插入到数据库中。我们可以使用分批处理的方式来解决这一问题。
假设需要插入5000条数据,我们可以将数据分割成5批,每批1000条。然后生成5条单独的批量插入sql语句,每条语句插入1000条数据。
// 将JSON数据转换为数组 $data = json_decode($_POST['datas']); // 将数据分割成5批 $batches = array_chunk($data, 1000); // 生成批量插入sql语句 foreach ($batches as $batch) { $sql = "INSERT INTO tablename (column_name1, column_name2, ...) VALUES "; foreach ($batch as $row) { $sql .= "('" . implode("', '", $row) . "'), "; } $sql = substr($sql, 0, -2) . ";"; // 删除最后的逗号和分号 // 执行批量插入sql语句 $result = mysqli_query($conn, $sql); }
这种分批处理的方式可以有效提高插入速度,并防止由于sql语句过大而发生超时错误。
立即学习“PHP免费学习笔记(深入)”;