PHP MySQL 预处理语句
在本教程中,您将学习如何使用PHP在MySQL中使用预处理语句。
预处理语句是什么
预处理语句(也称为参数化语句)只是一个SQL查询模板,其中包含占位符而不是实际参数值。在执行语句时,这些占位符将被实际值替换。
MySQLi支持使用匿名位置占位符(?),如下所示:
INSERT INTO persons (first_name, last_name, email) VALUES (?, ?, ?);
而PDO支持匿名位置占位符(?)和命名占位符。命名占位符以冒号(:)开头,后跟标识符,如下所示:
INSERT INTO persons (first_name, last_name, email)
VALUES (:first_name, :last_name, :email);
预处理语句执行包括两个阶段:准备和执行。准备 - 在准备阶段,将创建一个SQL语句模板并将其发送到数据库服务器。服务器解析语句模板,执行语法检查和查询优化,并将其存储以备后用。
执行 - 执行期间,参数值将发送到服务器。服务器从语句模板和这些值创建一个语句以执行它。
预处理语句非常有用,尤其是当您多次使用不同的值(例如一系列语句)多次执行一条特定的INSERT语句时。以下部分描述了使用它的一些主要优点。
使用预处理语句的优点
一个预处理语句可以高效地重复执行同一条语句,因为该语句仅被再次解析一次,而它可以多次执行。由于每次执行时仅需要将占位符值传输到数据库服务器,而不是传输完整的SQL语句,因此它还可以最大程度地减少带宽使用。
预处理语句还提供了强大的保护,可防止SQL注入ÿ