PDOStatement::bindParam

(no version information, might be only in CVS)

PDOStatement::bindParam --  指定された変数名にパラメータをバインドする

説明

bool PDOStatement::bindParam ( mixed parameter, mixed &variable [, int data_type [, int length]] )

警告

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

指定された変数名に SQL 文パラメータをバインドします。 SQL 文パラメータは、名前付けされたプレースホルダ もしくは疑問符プレースホルダのいずれかが可能です。

出力パラメータは、SQL 文が実行されたとき、バインドされた PHP 変数の値にデータベースによって返される値をセットします。これにより、 例えば機能をサポートするデータベースに対して、 出力もしくは入出力パラメータを用いてストアドプロシージャを コールすることができます。

NULL でない入力専用変数に対しては、代わりに PDOStatement::execute() に入力値の配列を渡すことができます。

パラメータ

parameter

パラメータ ID を指定します。名前付けされたプレースホルダを使った文に 対しては、:name 形式のパラメータ名となります。 疑問符プレースホルダを使った文に対しては、1 から始まるパラメータの 位置となります。

variable

SQL 文パラメータにバインドする PHP 変数名を指定します。

data_type

パラメータに対して PDO_PARAM_* 定数を使った明示的なデータ型を 指定します。ストアドプロシージャからの INOUT パラメータの場合、 data_type パラメータに PDO_PARAM_INPUT_OUTPUT ビットを設定するためにビット OR を使用してください。

入力パラメータとして NULL 値が渡す場合、PDO_PARAM_NULL 定数を使用してください。

length

データ型の長さを指定します。パラメータがストアドプロシージャからの OUT パラメータであることを示す場合、 明示的に長さを設定しなければなりません。

例 1. 名前付けされたプレースホルダを用いてプリペアドステートメントを実行する

<?php
/* バインドされた PHP 変数によってプリペアドステートメントを実行する */
$calories = 150;
$colour = 'red';
$sth = $dbh->prepare('SELECT name, colour, calories
    FROM fruit
    WHERE calories < :calories AND colour = :colour'
);
$sth->bindParam(':calories', $calories, PDO_PARAM_INT);
$sth->bindParam(':colour', $colour, PDO_PARAM_STR, 12);
$sth->execute();
?>

例 2. 疑問符プレースホルダを用いてプリペアドステートメントを実行する

<?php
/* バインドされた PHP 変数によってプリペアドステートメントを実行する */
$calories = 150;
$colour = 'red';
$sth = $dbh->prepare('SELECT name, colour, calories
    FROM fruit
    WHERE calories < ? AND colour = ?'
);
$sth->bindParam(1, $calories, PDO_PARAM_INT);
$sth->bindParam(2, $colour, PDO_PARAM_STR, 12);
$sth->execute();
?>

例 3. プリペアドステートメントに NULL 値を渡す

<?php
/* バインドされた PHP 変数によってプリペアドステートメントを実行する */
$calories = 150;
$colour = 'red';
$sth = $dbh->prepare('SELECT name, colour, calories
    FROM fruit
    WHERE calories < :calories AND colour = :colour'
);
$sth->bindParam(':calories', $calories, PDO_PARAM_INT);

/* colour カラムが NULL である fruit を検索する */
$sth->bindParam(':colour', $colour, PDO_PARAM_NULL);

$sth->execute();
?>

例 4. INOUT パラメータを持つストアドプロシージャをコールする

<?php
/* INOUT パラメータを持つストアドプロシージャをコールする */
$colour = 'red';
$sth = $dbh->prepare('CALL puree_fruit(?)');
$sth->bindParam(1, $colour, PDO_PARAM_STR|PDO_PARAM_INPUT_OUTPUT, 12);
$sth->execute();
print(
"After pureeing fruit, the colour is: $colour");
?>

以下も参照ください

PDO::prepare()
PDOStatement::execute()