在MySQLi中使用预准备语句的优点是什么?
如果唯一的目的是保护查询的安全,那么使用mysqli_real_escape_string之类的东西而不是为每个查询编写这么多行代码(比如prepare、bind_param、execute、close等)不是更好吗?
发布于 2011-03-05 07:11:20
准备语句不仅仅是为了代码安全。它可以帮助SQL服务器解析您的语句并为您的查询生成执行计划。
如果您运行SELECT 1000次,那么SQL服务器将不得不解析、准备并生成关于如何获取您的数据1000次的计划。
如果您准备一条语句,然后使用不同的绑定值运行准备好的语句1000次,那么该语句只被解析一次,并且每次都使用相同的查询计划。
这不仅对在脚本中运行1000个查询很有帮助,而且对只有一条语句且脚本运行1000次的情况也很有帮助。服务器可以记住服务器端的计划。下一次运行脚本时,它将再次使用相同的计划。
当然,对于一两个查询来说,这看起来微不足道,但当您开始重复执行大量查询或相同的查询时,您将节省大量的处理时间。
发布于 2011-03-05 07:07:56
有几个优点:
$x,你会得到一个语法错误,如果$x是null,但是WHERE ? = 4将work.https://stackoverflow.com/questions/5200238
复制相似问题