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");?>
参考
- PDO::prepare() - 文を実行する準備を行い、文オブジェクトを返す
- PDOStatement::execute() - プリペアドステートメントを実行する
- PDOStatement::bindValue() - 値をパラメータにバインドする