我看到很多人说你应该总是使用预准备语句进行数据库查询.但是,PHP文档说:
每个准备好的语句占用服务器资源.声明应在使用后立即明确关闭.如果没有显式完成,则在PHP释放语句句柄时将关闭该语句.
使用预准备语句并不总是执行语句的最有效方式.仅执行一次的预准备语句会导致客户端 - 服务器往返次数超过未准备好的语句.
来自http://php.net/manual/en/mysqli.quickstart.prepared-statements.php
鉴于上述情况,如果您只打算使用一次查询,那么最好不要使用预准备语句吗?
差异被认为可以忽略不计.
然而,人们必须将本土准备的陈述与准备好的陈述的一般概念区分开来.
前者只是大多数DBMS支持的运行查询的一种形式,在此解释.它的用法可以质疑.
后者是用占位符代替实际数据的一般概念,意味着进一步处理替代数据.它被广泛用于编程,一个众所周知的printf()功能就是一个例子.并且后一种方法必须始终用于对数据库运行查询,无论它是否由本机预准备语句支持.因为:
因此,即使您考虑不使用本机预处理语句(这是非常好的),您也必须始终使用占位符而不是实际数据创建查询.为此,您可以使用完全如上所述工作的PDO - 默认情况下它只是模拟准备,意味着正在创建准备好的查询和数据的常规SQL查询,然后针对数据库运行.
但是,PDO缺乏对许多重要数据类型的支持,例如标识符或数组 - 因此它使您无法始终使用占位符,从而使注入成为可能.幸运的是,safeMysql具有每种数据类型的占位符,并允许您安全地运行查询.
| 归档时间: |
|
| 查看次数: |
296 次 |
| 最近记录: |