参数化查询(也称为预编译语句)是一种预先编译 SQL 语句的方法,因此您只需要提供需要插入语句的“参数”(类似于“变量”),就可以执行该语句。它通常用作防止SQL 注入攻击的手段。 您可以在 PHP 的 PDO 页面上了解更多信息(PDO 是数据库抽象层),尽管如果您使用 mysqli 数据库接口,也可以利用它们(请参阅prepare文档)。
这是一个清晰简明的解释,阐述了它是什么以及如何工作。 如何和为什么使用参数化 [存档链接] (原链接已失效) 基本上,该过程涉及到服务器对没有参数的请求进行预处理,以便知道查询类型。因此,例如,SELECT查询只是一个SELECT查询,无法通过参数(请求变量)连接成SELECT / DROP或其他MySql注入查询。相反,注入数据将仅是参数字段中的字符串数据。
参数化查询是一种查询,其中占位符用于参数,并且在执行时提供参数值。 为什么要使用参数化查询 使用参数化查询最重要的原因是避免 SQL 注入攻击。 其次,参数化查询会处理 SQL 查询可能失败的情况,例如在字段中插入 O'Baily。参数化查询可以处理此类查询,而无需强制您将单引号替换为双单引号。
这个语句是数据库系统的一个特点,可以高效地重复执行相同的SQL语句而不需要再次解析、编译和优化。准备好的语句是模板的一种,由应用程序使用不同的参数。参考文章 数据库系统可以执行相同类型的SQL语句,而无需对其进行解析、编译和优化。你可以在MySQL中编写或创建准备好的语句,但这并不是一种有效的方式,因为通过准备好的语句API的二进制协议更好。但是,你仍然可以编写准备好的语句,甚至不需要其他编程,可以直接在SQL中编写。 你可以在MySQL客户端程序中使用准备好的语句。在动态SQL方法中,还可以在存储过程中使用准备好的语句。在MySQL中创建准备好的语句:参考此文章 PREPARE TestStmt FROM 'SELECT * FROM Test WHERE TestNumber=?'; 您可以使用PHP代码通过其API管理预处理语句,或在JDBC的级别上进行管理。