什么是参数化查询,在PHP和MySQL中,此类查询的示例是什么?

有帮助吗?

解决方案

参数化查询(也称为 准备的声明)是预先编译SQL语句的一种手段,因此您需要提供的只是需要将其执行的“参数”(思考“变量”)。它通常用作防止 SQL注入攻击.

您可以在PHP上阅读有关这些的更多信息 PDO页面 (PDO是数据库抽象层),尽管如果您使用MySQLI数据库接口,也可以使用它们(请参阅 准备 文档)。

其他提示

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

本质的过程涉及服务器在没有参数的情况下预处理请求,因此它知道查询的类型。因此,例如,选择查询只是选择查询,不能被参数(请求变量)串联为选择 /删除或其他一些MySQL注入。相反,注射数据将只是参数字段中的字符串数据。

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

为什么使用参数化查询

  1. 使用参数化查询的最重要原因是避免SQL注入攻击。
  2. 其次,参数化查询会处理SQL查询可能会在某个字段中插入O'Baily可能失败的方案。参数化查询汉德尔这样的查询而不强迫您用双单引号替换单个报价。

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

数据库系统可以执行相同的SQL语句,而无需进行解析,编译和优化相同类型的SQL语句。

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

但是您仍然可以写作,即使这也不需要任何其他编程,您可以直接在SQL中写入。您可以为MySQL客户端程序使用准备好的语句。您还可以在存储过程中使用准备好的语句作为动态SQL方法。

在MySQL中创建准备好的语句: 参考是从本文中获取的

PREPARE TestStmt FROM 
'SELECT * FROM Test 
WHERE TestNumber=?';

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

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