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

有帮助吗?

解决方案

PHP的准备好的语句和存储过程部分手册虽然与PDO特别相关,但在说明中涵盖了这一点:

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

  • 查询仅需要解析(或 准备)一次,但可以执行 多次相同或 不同的参数。当查询 准备好后,数据库将 分析,编译和优化它 计划执行查询。为了 此过程可能需要进行的复杂查询 足够的时间,它将明显 如果有 需要重复多次相同的查询 时间具有不同的参数。经过 使用准备好的语句 应用程序避免重复 分析/编译/优化周期。这 表示准备好的语句使用 资源更少,运行速度更快。

  • 准备好的语句的参数 不需要被引用;司机 自动处理。如果 应用程序专门使用已准备好的 声明,开发人员可以确定 没有SQL注入将发生 (但是,如果 查询正在建立 未经转义的输入,SQL注入为 仍然有可能)。

    如果您正在寻找如何使用它们的特定示例,则上面的链接页面还包含代码示例。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top