有人能用简单的英语解释我参数化的查询是什么以及如何在PHP中为MySQL数据库实现它以避免SQL注入?
答案 0 :(得分:1)
PHP手册的prepared statements and stored procedures部分,虽然它与PDO特别相关,但它说得很好:
他们可以被认为是一种 编译的SQL模板 应用程序想运行,可以 使用变量参数定制。 准备好的陈述提供两个主要 好处:
只需要解析查询(或 准备)一次,但可以执行 多次使用相同或 不同的参数。什么时候查询 准备好了,数据库会 分析,编译和优化它 计划执行查询。对于 这个过程可以采取的复杂查询 足够的时间,它会显着 如果存在,则减慢应用程序的速度 需要重复相同的查询很多 不同参数的时间。通过 使用准备好的声明 应用程序避免重复 分析/编译/优化循环。这个 意味着准备好的陈述使用 资源减少,因此运行得更快。
准备语句的参数 不需要引用;司机 自动处理这个。如果 应用程序专用于准备 声明,开发人员可以肯定 不会发生SQL注入 (但是,如果其他部分 查询正在建立 未转义的输入,SQL注入是 仍然可能)。
如果您正在使用如何使用它们的具体示例,则上述链接页面还包含代码示例。