PDOStatement PDO::prepare(string statement, [array driver_options])
PDOStatement::execute() メソッドが実行する SQL ステートメントを準備します。この SQL ステートメントには、ステートメントの実行時に実際の値に置換する 0 個以上の名前付き (:name) パラメーター・マーカー、または疑問符 (?) パラメーター・マーカーを含めることができます。同じ SQL ステートメント内で名前付きパラメーター・マーカーと疑問符パラメーター・マーカーの両方を同時に使用することはできないので、いずれかのパラメーター・スタイルを選んでください。
異なるパラメーター値を用いて複数回発行されるステートメントは、PDO::prepare() および PDOStatement::execute() を用いて実行することによりそのパフォーマンスを改善できます。クライアントまたはサーバー側(あるいはその両方)でキャッシュされた照会プランおよびメタ情報を利用できるからです。また、手動でパラメーターを引用する必要がなくなるので SQL インジェクション・アタックを回避するのにも役立ちます。
PDO は、名前付きパラメーターを疑問符パラメーターに書き直すことにより、DB2 用 PDO_ODBC ドライバー で名前付きパラメーター・マーカーをサポートします。
これは、ターゲット・データベース管理システムに有効な SQL ステートメントでなければなりません。
この連想配列は、このメソッドが戻す PDOStatement オブジェクトの属性値を設定します。通常、PDO::ATTR_CURSOR 値を PDO::CURSOR_SCROLL に設定して、両方向スクロール・カーソルを要求するために使用します。
データベース管理システムがステートメントの準備に成功すると、PDO::prepare() は PDOStatement オブジェクトを戻します。
<?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();
?><?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();
?>
リファレンス・トピック
このトピックは次の資料に含まれています:
Perl および PHP アプリケーションの開発
最終更新 2006-10-27
http://publib.boulder.ibm.com/infocenter/db2luw/v9/topic/com.ibm.db2.udb.apdv.php.doc/doc/r0022472.htm