开发者社区> 问答> 正文

在mysqli中插入许多值的最佳方法?

我正在寻找一种SQL注入安全技术,以便通过PHP和MySQLi一次插入很多行(大约2000年)。 我有一个必须包含所有值的数组。目前,我正在这样做:

prepare($query); $stmt ->bind_param("s", $one); $stmt->execute(); $stmt->close(); } ?> 我尝试了call_user_func_array(),但是它引起了stackoverflow。

什么是更快的方法(例如一次将它们全部插入?),但是仍然可以防止SQL注入(如准备好的语句)和stackoverflows? 谢谢!

展开
收起
保持可爱mmm 2020-05-11 17:23:22 304 0
1 条回答
写回答
取消 提交回答
  • 通过将插入内容放入事务中,您应该能够大大提高速度。您还可以将您的prepare和bind语句移出循环。

    $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"); 编辑:

    我在Web服务器上经过10,000次迭代测试了此代码。

    没有事务:226 seconds. 有事务:2 seconds. 或a two order of magnitude speed increase,至少对于该测试。来源:stack overflow

    2020-05-11 17:23:33
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载