首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么选择MySQLi预准备语句?

为什么选择MySQLi预准备语句?
EN

Stack Overflow用户
提问于 2011-03-05 07:04:23
回答 2查看 1.8K关注 0票数 6

在MySQLi中使用预准备语句的优点是什么?

如果唯一的目的是保护查询的安全,那么使用mysqli_real_escape_string之类的东西而不是为每个查询编写这么多行代码(比如prepare、bind_param、execute、close等)不是更好吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-05 07:11:20

准备语句不仅仅是为了代码安全。它可以帮助SQL服务器解析您的语句并为您的查询生成执行计划。

如果您运行SELECT 1000次,那么SQL服务器将不得不解析、准备并生成关于如何获取您的数据1000次的计划。

如果您准备一条语句,然后使用不同的绑定值运行准备好的语句1000次,那么该语句只被解析一次,并且每次都使用相同的查询计划。

这不仅对在脚本中运行1000个查询很有帮助,而且对只有一条语句且脚本运行1000次的情况也很有帮助。服务器可以记住服务器端的计划。下一次运行脚本时,它将再次使用相同的计划。

当然,对于一两个查询来说,这看起来微不足道,但当您开始重复执行大量查询或相同的查询时,您将节省大量的处理时间。

票数 12
EN

Stack Overflow用户

发布于 2011-03-05 07:07:56

有几个优点:

  • 安全性-你不需要转义任何东西,你只需要绑定server.
  • Maintainability -如果你写了$x,你会得到一个语法错误,如果$x是null,但是WHERE ? = 4将work.
  • Performance -准备的查询可以用不同的参数重用,保存重建字符串,也可以在server.
  • Maintainability上重新解析-代码更容易阅读。在连接字符串以创建SQL时,很容易得到大量混合了SQL和PHP代码的小片段。使用预准备语句会鼓励您将SQL与确定变量的值分开。
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5200238

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档