什么是参数化查询?

tot*_*obs 24 php sql parameterized-query

什么是参数化查询,这样的查询示例在PHP和MySQL中会是什么?

Joh*_*ker 22

参数化查询(也称为预准备语句)是一种预编译SQL语句的方法,因此您需要提供的所有内容都是需要插入语句的"参数"(想想"变量").被执行.它通常用作防止SQL注入攻击的手段.

您可以在PHP的PDO页面上阅读有关这些内容的更多信息(PDO是数据库抽象层),但如果您使用的是mysqli数据库界面,也可以使用它们(请参阅准备文档).

  • @ RJD22不是真的 - 你刚刚发布了一个链接,我花时间解释了什么是参数化查询,为什么它们被普遍使用以及它们可以在PHP中被利用的两种方式.仅仅依赖于外部链接通常是不受欢迎的,因为它们可能*将来会消失/移动. (12认同)
  • @ RJD22是的,它**不太可能特定链接会发生变化.但是,这不是重点.Stack Overflow是一个相当不太有用的资源,如果它只是一系列外部链接,我添加了你必须在PHP网站上搜索的额外信息,以查找你是否不知道你在看什么对于. (11认同)
  • 参数化查询和准备好的语句是否有所不同?[链接](/sf/ask/2545728881/ Between-prepared-statement-and-parameterized-query-in-python) (2认同)
  • @KennetCeleste 他们是;根据 API,您可以执行未准备的参数化查询,并且可以创建包含不安全的嵌入式用户输入的准备好的语句。我真的希望人们不要再混淆这两个概念。 (2认同)

小智 8

这是对它是什么以及它如何工作的清晰简洁的解释。 如何以及为什么使用参数化[存档链接]

本质上,该过程涉及服务器在不带参数的情况下预处理请求,因此它知道查询的类型。因此,例如 SELECT 查询只是一个 SELECT 查询,并且不能通过参数(请求变量)连接为 SELECT / DROP 或其他一些 MySql 注入。相反,注入数据将只是参数字段中的字符串数据。

  • 你的链接失效了 (9认同)

小智 6

参数化查询是这样一种查询,其中占位符用于参数并在执行时提供参数值。

为什么使用参数化查询

  1. 使用参数化查询的最重要原因是为了避免 SQL 注入攻击。
  2. 其次,参数化查询处理sql 查询可能失败的场景,例如在字段中插入O'Baily。参数化查询处理此类查询,而不会强制您用双单引号替换单引号。