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

发布于 2024-10-15 21:52:35 字数 63 浏览 5 评论 0原文

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

Can anybody explain me in plain English what parametrized queries are and how to implement it in PHP for a MySQL database to avoid SQL injection?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

[浮城] 2024-10-22 21:52:35

PHP 手册的准备好的语句和存储过程部分,同时它与 PDO 特别相关,它很好地涵盖了这一点,它说:

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

  • 查询只需要被解析(或者
    准备)一次,但可以执行
    多次使用相同或
    不同的参数。当查询时
    准备好后,数据库将
    分析、编译和优化它的
    执行查询的计划。为了
    此过程可能需要复杂的查询
    足够的时间,它会明显
    如果存在以下情况,则减慢应用程序的速度
    需要多次重复相同的查询
    不同参数的时间。经过
    使用准备好的语句
    应用程序避免重复
    分析/编译/优化循环。这
    意味着准备好的语句使用
    资源更少,因此运行速度更快。

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

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

The prepared statements and stored procedures section of the PHP manual, whilst it relates specifically to PDO, covers this well when it says:

They can be thought of as a kind of
compiled template for the SQL that an
application wants to run, that can be
customized using variable parameters.
Prepared statements offer two major
benefits:

  • The query only needs to be parsed (or
    prepared) once, but can be executed
    multiple times with the same or
    different parameters. When the query
    is prepared, the database will
    analyze, compile and optimize it's
    plan for executing the query. For
    complex queries this process can take
    up enough time that it will noticeably
    slow down an application if there is a
    need to repeat the same query many
    times with different parameters. By
    using a prepared statement the
    application avoids repeating the
    analyze/compile/optimize cycle. This
    means that prepared statements use
    fewer resources and thus run faster.

  • The parameters to prepared statements
    don't need to be quoted; the driver
    automatically handles this. If an
    application exclusively uses prepared
    statements, the developer can be sure
    that no SQL injection will occur
    (however, if other portions of the
    query are being built up with
    unescaped input, SQL injection is
    still possible).

If you're after specific example of how to use them, the above linked page also includes code samples.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文