什么是参数化查询?

时间:2011-01-17 10:18:33

标签: php mysql parameterized-query

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

4 个答案:

答案 0 :(得分:19)

参数化查询(也称为预处理语句)是一种预编译SQL语句的方法,因此您需要提供的只是“参数”(想想“变量”)需要插入语句才能执行。它通常用作预防SQL injection attacks的手段。

您可以在PHP的PDO page(PDO是数据库抽象层)上阅读更多相关内容,但如果您使用的是mysqli数据库界面,也可以使用它们(请参阅prepare文档)。

答案 1 :(得分:2)

这是一个明确而简洁的解释,它是什么,以及它是如何工作的。 How and Why to use Parameterization

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

答案 2 :(得分:1)

此语句是数据库系统的一项功能,其中相同的SQL语句以高效率重复执行。准备好的语句是一种模板,由具有不同参数的应用程序使用。here

数据库系统可以执行相同的SQL语句,而无需对同一种SQL语句一次又一次地进行解析,编译和优化。

您可以在MySQL中编写或创建预准备语句,但这不是一种有效的方法,因为通过预准备语句API的二进制协议更好。

但是你仍然可以编写,甚至这不需要任何其他可以直接在SQL中编写的编程。 您可以为MySQL Client程序使用预准备语句。您还可以在存储过程中使用预准备语句来进行动态SQL方法。

在MySQL中创建预准备语句:Reference Article

function loaderComplete(e:Event):void
{
    loadedPage = loader.data;
    Reader.read(loadedPage);
}

您可以使用PHP代码通过其API管理预准备语句或在JDBC级别进行管理。

答案 3 :(得分:1)

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

为何使用参数化查询

  1. 使用参数化查询的最重要原因是避免SQL注入攻击。
  2. 其次参数化查询处理sql查询可能失败的情况,例如:将O&#B; Baily插入田野。参数化查询可以在不强制您用双引号替换单引号的情况下进行查询。