php实现批量添加
PHP实现批量添加数据的方法
使用MySQLi预处理语句实现批量插入
$mysqli = new mysqli("localhost", "username", "password", "database");
$stmt = $mysqli->prepare("INSERT INTO table_name (column1, column2) VALUES (?, ?)");
$values = [
['value1-1', 'value1-2'],
['value2-1', 'value2-2'],
// 更多数据...
];
foreach ($values as $row) {
$stmt->bind_param("ss", $row[0], $row[1]);
$stmt->execute();
}
$stmt->close();
$mysqli->close();
使用PDO实现批量插入
$pdo = new PDO("mysql:host=localhost;dbname=database", "username", "password");
$stmt = $pdo->prepare("INSERT INTO table_name (column1, column2) VALUES (:col1, :col2)");
$values = [
['col1' => 'value1-1', 'col2' => 'value1-2'],
['col1' => 'value2-1', 'col2' => 'value2-2'],
// 更多数据...
];
foreach ($values as $row) {
$stmt->execute($row);
}
使用SQL的批量插入语法
$mysqli = new mysqli("localhost", "username", "password", "database");
$sql = "INSERT INTO table_name (column1, column2) VALUES ";
$values = [
"('value1-1', 'value1-2')",
"('value2-1', 'value2-2')",
// 更多数据...
];
$sql .= implode(",", $values);
$mysqli->query($sql);
$mysqli->close();
处理表单批量提交
HTML表单示例:
<form method="post" action="process.php">
<input type="text" name="items[0][name]">
<input type="text" name="items[0][price]">
<input type="text" name="items[1][name]">
<input type="text" name="items[1][price]">
<button type="submit">提交</button>
</form>
PHP处理代码:
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$items = $_POST['items'];
foreach ($items as $item) {
// 处理每个项目
$name = $item['name'];
$price = $item['price'];
// 插入数据库或其他操作
}
}
使用事务确保数据完整性
$mysqli = new mysqli("localhost", "username", "password", "database");
$mysqli->begin_transaction();
try {
$stmt = $mysqli->prepare("INSERT INTO table_name (column1) VALUES (?)");
foreach ($data as $value) {
$stmt->bind_param("s", $value);
$stmt->execute();
}
$mysqli->commit();
} catch (Exception $e) {
$mysqli->rollback();
throw $e;
}
$mysqli->close();
性能优化建议
对于大量数据插入,考虑以下优化措施:
- 使用事务包裹批量操作
- 适当增加max_allowed_packet大小
- 考虑使用LOAD DATA INFILE对于超大数据集
- 批量处理时限制每次插入的记录数(如每次1000条)







