与MySQLi一起使用预备语句有什么好处?
[如果唯一的目的是保护查询,那么使用mysqli_real_escape_string
这样的查询来清理查询不是更好,而不是为每个查询编写那么多行代码(例如prepare,bind_param,execute,close等)。 ?
准备语句不仅是为了代码安全。它有助于SQL Server解析您的语句并为查询生成执行计划。
如果您运行SELECT 1000次,则SQL Server将必须解析,准备并生成有关如何获取1000次数据的计划。
[如果您准备一条语句,然后以不同的绑定值运行准备的语句1000次,则该语句仅被解析一次,并且每次都使用相同的查询计划。
这不仅在您在脚本中运行1,000个查询时有所帮助,而且如果您只有1条语句并运行该脚本1,000次,也有帮助。服务器可以记住计划服务器端。下次您的脚本运行时,它将再次使用相同的计划。
当然,对于一个或两个查询来说,这似乎是微不足道的,但是当您开始重复执行大量查询或同一查询时,将节省大量处理时间。
有几个优点:
WHERE $x = 4
,如果$x
为空,则将出现语法错误,但是WHERE ? = 4
可以使用。