什么是参数化查询,这样的查询示例在PHP和MySQL中会是什么?
什么是参数化查询,这样的查询示例在PHP和MySQL中会是什么?
参数化查询(也称为 准备好的声明)是一种预编译SQL语句的方法,因此您需要提供的只是需要插入语句中的“参数”(想想“变量”)才能执行。它通常被用作预防手段 SQL注入攻击。
您可以在PHP上阅读有关这些内容的更多信息 PDO页面 (PDO是一个数据库抽象层),虽然如果你使用mysqli数据库接口你也可以使用它们(参见 准备 文档)。
这是一个清晰简洁的解释,它是什么,以及它是如何工作的。 如何以及为何使用参数化
该过程必不可少的是服务器在没有参数的情况下预处理请求,因此它知道查询的类型。因此,例如SELECT查询只是一个SELECT查询,并且不能通过参数(请求变量)连接成SELECT / DROP或其他一些MySql注入。相反,注入数据将只是参数字段中的字符串数据。
此语句是数据库系统的一个功能,其中相同的SQL语句以高效率重复执行。准备好的语句是一种模板,由具有不同参数的应用程序使用。参考文章
数据库系统可以执行相同的SQL语句,而无需对同一类型的SQL语句一次又一次地进行解析,编译和优化。
您可以在MySQL中编写或创建预准备语句,但这不是一种有效的方法,因为通过预准备语句API的二进制协议更好。
但是你仍然可以编写,甚至这不需要任何其他编程,你可以直接在SQL中编写。 您可以为MySQL Client程序使用预准备语句。您还可以在存储过程中使用预准备语句来进行动态SQL方法。
在MySQL中创建预准备语句: 参考文献来自本文
PREPARE TestStmt FROM
'SELECT * FROM Test
WHERE TestNumber=?';
您可以使用PHP代码通过其API管理预准备语句或在JDBC级别进行管理。
参数化查询是一种查询,其中占位符用于参数,参数值在执行时提供。
为什么使用参数化查询