首页 >后端开发 >php教程 >如何在 MySQLi 中使用预准备语句有效执行多行插入?

如何在 MySQLi 中使用预准备语句有效执行多行插入?

Susan Sarandon
Susan Sarandon原创
2024-10-20 16:35:29598浏览

How to Perform Multiple Row Insertion Effectively in MySQLi Using Prepared Statements?

使用预准备语句在 MySQLi 中进行多行插入

处理批量数据插入时,构建具有多行的单个查询比执行多个单独的查询更有效。但是,使用准备好的语句进行多行插入需要稍微不同的方法。

创建多行语句

要使用准备好的语句插入多行,您可以利用字符串连接方法:

<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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn