PHP
数据库 | Database

PDO::prepare

PDO::prepare

(PHP 5 >= 5.1.0, PHP 7, PECL pdo >= 0.1.0)

PDO :: prepare - 准备执行语句并返回一个语句对象

描述

public PDOStatement PDO::prepare ( string $statement [, array $driver_options = array() ] )

准备要由PDOStatement :: execute()方法执行的SQL语句。SQL语句可以包含零个或多个名为(:name)或问号(?)参数标记,在执行语句时,实数值将被替换。您不能在同一个SQL语句中使用命名和问号参数标记; 选择一个或另一个参数样式。使用这些参数来绑定任何用户的输入,不要直接在查询中包含用户的输入。

当您调用PDOStatement :: execute()时,您必须为每个希望传入语句的值包含一个唯一的参数标记。除非启用了仿真模式,否则不能在准备好的语句中多次使用同名的命名参数标记。

注意:参数标记只能表示一个完整的数据文字。字面、关键字、标识符以及任何任意查询部分都不能使用参数绑定。例如,不能将多个值绑定到SQL语句的IN()子句中的单个参数。

对于将使用不同参数值多次发布的语句,调用PDO :: prepare()和PDOStatement :: execute()可以通过允许驱动程序协商查询计划的客户端和/或服务器端缓存来优化应用程序的性能、元信息,并且不需要通过手动引用参数来帮助防止SQL注入攻击。

如果驱动程序支持一种风格但不支持另外的风格,则PDO将模拟不在本地支持它们的驱动程序的预准备语句/绑定参数,并且还可以将命名或问号风格参数标记重写为更适合的内容。

参数

statement

这必须是目标数据库服务器的有效SQL语句模板。

driver_options

此数组包含一个或多个key =>值对,以便为此方法返回的PDOStatement对象设置属性值。你会最常使用的设置PDO :: ATTR_CURSOR值PDO :: CURSOR_SCROLL请求滚动游标。某些驱动程序具有可能在准备时设置的驱动程序特定选项。

返回值

如果数据库服务器成功准备语句,则PDO :: prepare()将返回一个PDOStatement对象。如果数据库服务器无法成功准备语句,则PDO :: prepare()返回FALSE或发出PDOException(取决于错误处理)。

注意:仿真准备语句不与数据库服务器通信,所以PDO :: prepare()不检查语句。

示例

示例#1准备一个带有命名参数的SQL语句

<?php /* Execute a prepared statement by passing an array of values */ $sql = 'SELECT name, colour, calories     FROM fruit     WHERE calories < :calories AND colour = :colour'; $sth = $dbh->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY) $sth->execute(array(':calories' => 150, ':colour' => 'red') $red = $sth->fetchAll( $sth->execute(array(':calories' => 175, ':colour' => 'yellow') $yellow = $sth->fetchAll( ?>

示例#2准备带有问号参数的SQL语句

<?php /* Execute a prepared statement by passing an array of values */ $sth = $dbh->prepare('SELECT name, colour, calories     FROM fruit     WHERE calories < ? AND colour = ?' $sth->execute(array(150, 'red') $red = $sth->fetchAll( $sth->execute(array(175, 'yellow') $yellow = $sth->fetchAll( ?>

扩展内容

  • PDO :: exec() - 执行一条SQL语句并返回受影响的行数

  • PDO :: query() - 执行一条SQL语句,返回一个结果集作为PDOStatement对象

  • PDOStatement :: execute() - 执行准备好的语句

← PDO::lastInsertId

PDO::query →