处理批量数据插入时,构建具有多行的单个查询比执行多个单独的查询更有效。但是,使用准备好的语句进行多行插入需要稍微不同的方法。
创建多行语句
要使用准备好的语句插入多行,您可以利用字符串连接方法:
<code class="php">$rows = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]; $rowCount = count($rows); $values = "(" . implode('),(', array_fill(0, $rowCount, '?,?,?')) . ")"; $stmt = $mysqli->prepare("INSERT INTO table (col1, col2, col3) VALUES $values");</code>
这里,$values 变量创建包含格式为 (?, ?, ?), (?, ?, ?), ....
绑定和执行
一旦准备好语句,就可以绑定值并执行语句。但是,请注意,bind_param 期望所有参数都作为单个数组传递,因此必须使用 array_merge(...$rows) 方法对多行进行展平和解包:
<code class="php">$stmt->bind_param(str_repeat('i', $rowCount * 3), ...array_merge(...$rows)); $stmt->execute();</code>
这种方法允许您在一次数据库访问中执行多行插入,提高批量数据插入操作的效率。
以上是如何在 MySQLi 中使用预准备语句有效执行多行插入?的详细内容。更多信息请关注PHP中文网其他相关文章!