首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

PDO::prepare

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

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

描述

代码语言:javascript
复制
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_CURSORPDO :: CURSOR_SCROLL请求滚动游标。某些驱动程序具有可能在准备时设置的驱动程序特定选项。

返回值

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

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

示例

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

代码语言:javascript
复制
<?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语句

代码语言:javascript
复制
<?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 →

扫码关注腾讯云开发者

领取腾讯云代金券

http://www.vxiaotou.com