php foreach分批循环,快速插入数据库
时间: 2023-08-10 12:19:27 浏览: 150
可以使用 `array_chunk` 函数将需要插入的数据按照指定大小分成多个数组,然后使用 `foreach` 循环遍历每个子数组,将每个子数组作为一批数据插入到数据库。具体的代码如下:
```
// 连接数据库
$conn = mysqli_connect("localhost", "username", "password", "database");
// 原始数据数组
$data = array(
array('column1' => 'value1', 'column2' => 'value2', 'column3' => 'value3'),
array('column1' => 'value4', 'column2' => 'value5', 'column3' => 'value6'),
array('column1' => 'value7', 'column2' => 'value8', 'column3' => 'value9'),
// ...
);
// 每批处理的数据量
$batchSize = 1000;
// 将数据按照指定大小分成多个数组
$dataChunks = array_chunk($data, $batchSize);
// 循环遍历每个子数组进行插入操作
foreach ($dataChunks as $chunk) {
// 构造 SQL 语句
$sql = "INSERT INTO table_name (column1, column2, column3) VALUES ";
// 拼接每个数据项的值
foreach ($chunk as $dataItem) {
$sql .= "('" . $dataItem['column1'] . "', '" . $dataItem['column2'] . "', '" . $dataItem['column3'] . "'),";
}
// 去掉最后一个逗号
$sql = rtrim($sql, ',');
// 执行 SQL 语句
mysqli_query($conn, $sql);
}
// 关闭数据库连接
mysqli_close($conn);
```
以上代码中,将需要插入的数据 `$data` 按照每批处理的数据量为 1000 进行分割,得到多个子数组 `$dataChunks`,然后使用 `foreach` 循环遍历每个子数组 `$chunk`,构造插入语句并执行,这样就可以实现分批插入数据库的效果。请注意,以上代码仅作为示例,实际情况中需要根据具体的需求进行修改。
阅读全文