PDO::prepare

(no version information, might be only in CVS)

PDO::prepare --  文を実行する準備を行い、文オブジェクトを返す

説明

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

警告

この関数は、 実験的なステータスにあります。これは、この関数の 動作、関数名、ここで書かれていること全てがPHPの将来のバージョンで予告 なく変更される可能性があることを意味します。注意を喚起するとともに自分 のリスクでこの関数を使用してください。

PDOStatement::execute() メソッドによって実行される SQL 文を準備します。 SQL 文は、文が実行されるときに実際の値に置き換えられる 0 個もしくはそれ以上の名前 (:name) もしくは疑問符 (?) パラメータマークを含むことができます。

異なるパラメータを用いて複数回実行されるような文に対し PDO::prepare()PDOStatement::execute() をコールすることは、 アプリケーションのパフォーマンスを最適化し、 SQL インジェクション攻撃から保護する助けになります。

パラメータ

statement

これは対象のデータベースサーバに対して有効な SQL 文でなければなりません。

driver_options

この配列は、このメソッドによって返される PDOStatement オブジェクトに対して 1 もしくはそれ以上の key=>value の組を含みます。 通常、スクロール可能なカーソルを要求するために PDO_ATTR_CURSORPDO_CURSOR_SCROLL をセットする場合に使用するでしょう。

戻り値

もしデータベースサーバが正常に文を準備する場合、 PDO::prepare() は PDOStatement オブジェクトを返します。

例 1. 名前付きパラメータを用いて 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();
?>

例 2. 疑問符パラメータを用いて SQL 文を準備する

<?php
/* 値の配列を渡してプリペアドステートメントを実行する */
$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()
PDO::query()
PDOStatement::execute()