什么是参数化查询用简单的英语解释?

时间:2011-02-05 10:49:20

标签: php mysql sql-injection parameterized-query

有人能用简单的英语解释我参数化的查询是什么以及如何在PHP中为MySQL数据库实现它以避免SQL注入?

1 个答案:

答案 0 :(得分:1)

PHP手册的prepared statements and stored procedures部分,虽然它与PDO特别相关,但它说得很好:

  

他们可以被认为是一种   编译的SQL模板   应用程序想运行,可以   使用变量参数定制。   准备好的陈述提供两个主要   好处:

     
      
  • 只需要解析查询(或   准备)一次,但可以执行   多次使用相同或   不同的参数。什么时候查询   准备好了,数据库会   分析,编译和优化它   计划执行查询。对于   这个过程可以采取的复杂查询   足够的时间,它会显着   如果存在,则减慢应用程序的速度   需要重复相同的查询很多   不同参数的时间。通过   使用准备好的声明   应用程序避免重复   分析/编译/优化循环。这个   意味着准备好的陈述使用   资源减少,因此运行得更快。

  •   
  • 准备语句的参数   不需要引用;司机   自动处理这个。如果   应用程序专用于准备   声明,开发人员可以肯定   不会发生SQL注入   (但是,如果其他部分   查询正在建立   未转义的输入,SQL注入是   仍然可能)。

  •   

如果您正在使用如何使用它们的具体示例,则上述链接页面还包含代码示例。