Php/docs/pdostatement.bindparam

提供:Dev Guides
< Php
移動先:案内検索

PDOStatement::bindParam

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

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


説明

public PDOStatement::bindParam ( mixed $parameter , mixed &$variable [, int $data_type = PDO::PARAM_STR [, int $length [, mixed $driver_options ]]] ) : bool

準備された SQL ステートメント中で、 対応する名前もしくは疑問符プレースホルダにパラメータをバインドします。 PDOStatement::bindValue() と異なり、 変数は参照としてバインドされ、PDOStatement::execute() がコールされたときのみ評価されます。

ほとんどのパラメータは入力パラメータです。つまり、クエリを構築する際、 パラメータは読み込み専用で使用されます(とはいえ、 data_type によってはキャストされる可能性もあります)。 いくつかのドライバは、出力パラメータとしてデータを返す ストアドプロシージャの実行をサポートしており、 またいくつかのドライバは、データを渡し更新された値を受け取る、 といった入出力パラメータもサポートしています。


パラメータ

parameter
パラメータ ID を指定します。名前付けされたプレースホルダを使った文に 対しては、:name 形式のパラメータ名となります。 疑問符プレースホルダを使った文に対しては、1 から始まるパラメータの 位置となります。
variable
SQL ステートメントパラメータにバインドする PHP 変数名を指定します。
data_type
パラメータに対して PDO::PARAM_* 定数 を使った明示的なデータ型を指定します。 ストアドプロシージャからの INOUT パラメータの場合、 data_type パラメータに PDO::PARAM_INPUT_OUTPUT ビットを設定するためにビット OR を使用してください。
length
データ型の長さを指定します。パラメータがストアドプロシージャからの OUT パラメータであることを示す場合、 明示的に長さを設定しなければなりません。
driver_options


返り値

成功した場合に true を、失敗した場合に false を返します。


例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 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");?>

参考