MySQL 批量插入获取自动生成 ID - 完整示例与代码
MySQL 批量插入获取自动生成 ID - 完整示例与代码
在 MySQL 中,可以使用 LAST_INSERT_ID() 函数获取上一次插入操作中自动生成的 ID。如果要批量插入数据并获取每个插入操作的自动生成 ID,可以采用以下步骤:
- 使用
INSERT INTO ... VALUES (), (), (), ...的语法批量插入数据。 - 在每次插入之后,立即执行
SELECT LAST_INSERT_ID()获取自动生成的 ID,并保存到一个数组中。 - 最后,返回保存了所有自动生成 ID 的数组。
示例代码(使用 mysqli 扩展)
// 假设 $data 是一个二维数组,每行表示一条待插入数据
$sql = 'INSERT INTO my_table (col1, col2, col3) VALUES ';
foreach ($data as $row) {
$sql .= '('' . $row['col1'] . '', '' . $row['col2'] . '', '' . $row['col3'] . ''),';
}
$sql = rtrim($sql, ','); // 去掉最后一个逗号
$result = mysqli_query($conn, $sql);
if ($result) {
$id_array = array();
for ($i = 0; $i < mysqli_affected_rows($conn); $i++) {
$id_array[] = mysqli_insert_id($conn);
}
return $id_array;
} else {
return false;
}
使用 PDO 扩展获取自动生成 ID
如果你使用的是 PDO 扩展,也可以采用类似的方法获取自动生成 ID。
// ... 代码 ...
$stmt->execute();
$id_array = array();
for ($i = 0; $i < $stmt->rowCount(); $i++) {
$id_array[] = $conn->lastInsertId();
}
// ... 代码 ...
注意:
- 以上代码示例仅供参考,实际使用中需要根据具体情况进行调整。
- 确保你的数据库配置正确,并且已成功连接到数据库。
- 建议使用预处理语句来防止 SQL 注入攻击。
- 如果你在使用其他数据库系统,请参考相应的文档了解如何获取自动生成 ID。
原文地址: https://www.cveoy.top/t/topic/nVU5 著作权归作者所有。请勿转载和采集!