PHP PDO prepare()和execute()的用法(附带实例)
在 PHP 程序中编写 SQL 语句时,如果将发送的数据和 SQL 语句写在一起,每条 SQL 语句都需要解析器进行分析、编译和优化,效率低。
预处理机制是先定义和发送模板形式的 SQL 语句,这样的语句用占位符替代实际的数据,称为预处理 SQL 语句,解析器会预先编译预处理 SQL 语句,再处理相关数据。
使用预处理机制可以避免数据中有特殊字符(如单引号)而导致的语法问题出现,提高程序运行效率。通过 PDO 中的预处理方法 prepare() 和 execute() 可以实现预处理机制。
prepare() 方法用于准备预处理 SQL 语句,其基本语法格式如下:
当调用 prepare() 方法后,预处理 SQL 语句并不会执行,此时可以调用 execute() 方法执行。
execute() 方法的语法格式如下:
下面演示如何使用预处理方法。创建 pdo03.php 文件,具体代码如下:
上述代码的输出结果为 true,说明执行成功。
预处理机制是先定义和发送模板形式的 SQL 语句,这样的语句用占位符替代实际的数据,称为预处理 SQL 语句,解析器会预先编译预处理 SQL 语句,再处理相关数据。
使用预处理机制可以避免数据中有特殊字符(如单引号)而导致的语法问题出现,提高程序运行效率。通过 PDO 中的预处理方法 prepare() 和 execute() 可以实现预处理机制。
prepare() 方法用于准备预处理 SQL 语句,其基本语法格式如下:
PDOStatement PDO::prepare ( string $query, array $options = array() )在上述语法格式中:
- $query 是预处理 SQL 语句,该语句中动态变化的量(如查询、更新、删除的条件、插入的数据等)可用占位符代替。PDO 支持两种占位符,分别为问号占位符“?”和参数占位符“:参数名称”,在一个 SQL 模板中只能选择使用一种占位符;
- $options 是可选参数,表示设置一个或多个 PDOStatement 对象的属性值。该方法执行成功后返回 PDOStatement 类对象,执行失败返回 false 或抛出异常。
当调用 prepare() 方法后,预处理 SQL 语句并不会执行,此时可以调用 execute() 方法执行。
execute() 方法的语法格式如下:
PDOStatement::execute($input_parameters)在上述语法格式中,$input_parameters 是可选参数,表示为预处理SQL语句中的占位符绑定数据。如果预处理 SQL 语句中不包含占位符,可省略此参数。
下面演示如何使用预处理方法。创建 pdo03.php 文件,具体代码如下:
<?php $dsn = 'mysql:host=localhost;port=3306;dbname=myframe;charset=utf8mb4'; $pdo = new PDO($dsn, 'root', '123456'); $sql = 'SELECT * FROM `student`'; $stmt = $pdo->prepare($sql); var_dump($stmt->execute()); // 输出结果:bool(true)在上述代码中:
- 第 4 行代码定义了预处理 SQL 语句;
- 第 5 行代码调用 prepare() 方法准备预处理 SQL 语句,prepare() 方法返回的 $stmt 是 PDOStatement 类对象;
- 第 6 行代码用于执行预处理 SQL 语句。
上述代码的输出结果为 true,说明执行成功。