天天看點

PDO::prepare

PHP PDO 參考手冊

PDO::prepare — 準備要執行的SQL語句并傳回一個 PDOStatement 對象(PHP 5 >= 5.1.0, PECL pdo >= 0.1.0)

說明

文法

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

為 PDOStatement::execute() 方法準備要執行的SQL語句,SQL語句可以包含零個或多個命名(:name)或問号(?)參數标記,參數在SQL執行時會被替換。

你不能在 SQL 語句中同時包含命名(:name)或問号(?)參數标記,隻能選擇其中一種風格。

預處理 SQL 語句中的參數在使用PDOStatement::execute()方法時會傳遞真實的參數。

參數

statement

合法的SQL語句。

driver_options

此數組包含一個或多個 key=>value 對來設定 PDOStatement 對象的屬性,

最常使用到是将PDO::ATTR_CURSOR值設定為PDO::CURSOR_SCROLL來請求一個可滾動遊标。

傳回值

如果成功,PDO::prepare()傳回PDOStatement對象,如果失敗傳回 FALSE 或抛出異常 PDOException 。

執行個體

使用命名(:name)參數來準備SQL語句

<?php

/* 通過數組值向預處理語句傳遞值 */

$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();

?>

使用問号(?)參數來準備SQL語句

$sth = $dbh->prepare('SELECT name, colour, calories

WHERE calories < ? AND colour = ?');

$sth->execute(array(150, 'red'));

$sth->execute(array(175, 'yellow'));