在 MySQL 中使用 PDO 高效插入多行
当面对向 MySQL 表中插入多行的任务时,开发人员经常思考使用 PDO 的最佳方法。主要有两个选项:逐行执行或连接 SQL 语句并批量执行。
选项 1:单独行执行
这种方法涉及准备 SQL 语句并分别为每一行执行它:
$sql = "insert into `table_name` (col1, col2, col3) values (?, ?, ?)"; $stmt = $db->prepare($sql); foreach ($rows as $row) { $stmt->execute($row); }
选项 2:批量插入
在此方法中,SQL 语句与行的值连接,然后作为单个命令执行:
$sql = "insert into `table_name` (col1, col2, col3) values "; $paramArray = []; $sqlArray = []; foreach ($rows as $row) { $sqlArray[] = '(' . implode(',', array_fill(0, count($row), '?')) . ')'; foreach ($row as $element) { $paramArray[] = $element; } } $sql .= implode(',', $sqlArray); $stmt = $db->prepare($sql); $stmt->execute($paramArray);
性能注意事项
虽然批量插入方法理论上更快,但两个选项之间的实际性能差异通常可以忽略不计。在大多数情况下,执行一次语句节省的时间将被连接值的开销所抵消。
安全注意事项
这两种方法都被认为是安全的,因为它们使用准备好的语句来防止SQL注入
建议
为了简单和易于实现,通常建议使用单行执行方法。但是,如果性能是一个关键问题,则可以探索批量插入方法。
附加说明
以上是MySQL中如何使用PDO高效插入多行?的详细内容。更多信息请关注PHP中文网其他相关文章!