PDO 准备插入:增强批量数据插入的安全性和性能
在数据操作领域,PDO 准备语句提供了卓越的水平与静态查询相比,安全性和性能的提高。这扩展到批量数据插入,其中可以通过单个查询有效地插入多行值。
可以利用 PDO 的准备语句来生成“通过使用一个查询插入多行值”。关键是要设计一个容纳多组值的结构化查询。
为了说明这一点,让我们考虑以下 SQL 语句:
INSERT INTO `tbl` (`key1`,`key2`) VALUES ('r1v1','r1v2'),('r2v1','r2v2'),...
在此语句中,每组值都包含在其中在它自己的一组括号内。为了使此查询适应准备好的插入,我们可以为每列使用占位符序列,并将这些占位符连接起来以创建 VALUES 部分。
例如,如果我们有两列,则 VALUES 部分将为:
(?,?),
然后我们为每行数据复制这个 VALUES 部分,并用逗号:
(?,?), (?,?), ...
最后,我们可以构建完整的查询:
INSERT INTO `tbl` (`key1`,`key2`) VALUES (?,?) , (?,?), ...
要使用 PDO 执行此查询,我们准备语句并使用以下命令提供包含所有值的数组:执行()方法。下面的代码演示了这种方法:
$data = [['valueA1', 'valueB1'], ['valueA2', 'valueB2']]; $values = implode(',', array_fill(0, count($data[0]), '?')); $sql = "INSERT INTO table (colA, colB) VALUES " . implode(',', array_fill(0, count($data), "($values)")) . ";"; $stmt = $db->prepare($sql); $stmt->execute(array_merge(...$data));
该技术不仅通过清理输入来确保数据完整性,还通过执行单个查询进行多行插入来优化性能。
以上是PDO 准备语句如何优化批量数据插入以增强安全性和性能?的详细内容。更多信息请关注PHP中文网其他相关文章!