首页 > 数据库 > mysql教程 > 如何高效地向 MySQLi 中插入多行,同时防止 SQL 注入?

如何高效地向 MySQLi 中插入多行,同时防止 SQL 注入?

Mary-Kate Olsen
发布: 2024-12-24 17:09:11
原创
519 人浏览过

How Can I Efficiently Insert Multiple Rows into MySQLi While Preventing SQL Injection?

通过 SQL 注入缓解在 MySQLi 中高效插入多行

使用 PHP 和 MySQLi 将大量行插入 MySQL 数据库需要一种既安全又高效的技术。在处理此类数据量时避免 SQL 注入可能具有挑战性。

解决方案

要解决此问题,请考虑使用事务对插入操作进行分组。这种方法涉及将准备和绑定操作移到循环之外,如下所示:

$array = array("array", "with", "about", "2000", "values");
$query = "INSERT INTO table (link) VALUES (?)";
$stmt = $mysqli->prepare($query);
$stmt->bind_param("s", $one);

$mysqli->query("START TRANSACTION");
foreach ($array as $one) {
    $stmt->execute();
}
$stmt->close();
$mysqli->query("COMMIT");
登录后复制

事务的好处

  • 提高速度: 在事务中执行 SQL 查询可显着减少开销并提高性能。我们进行 10,000 次迭代的测试显示,使用事务时速度提高了两倍。
  • SQL 注入缓解: 事务将一系列操作分组到单个原子单元中,确保全部或都不执行的行被插入。这可以防止部分插入并防止 SQL 注入尝试。

实现

请记住在 PHP 循环之外执行 START TRANSACTION 和 COMMIT 查询以确保整个操作被视为单个事务。这种方法将准备好的语句的安全性与批量插入的效率结合起来,同时减少堆栈溢出。

以上是如何高效地向 MySQLi 中插入多行,同时防止 SQL 注入?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板