PDOStatement::bindParam

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

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

説明

publicPDOStatement::bindParam(
    string|int$param,
    mixed&$var,
    int$type = PDO::PARAM_STR,
    int$maxLength = 0,
    mixed$driverOptions = null
): bool

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

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

パラメータ

param

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

var

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

type

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

maxLength

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

driverOptions

戻り値

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

エラー / 例外

PDO::ATTR_ERRMODEPDO::ERRMODE_WARNING に設定されていた場合、E_WARNING レベルのエラーが発生します。

PDO::ATTR_ERRMODEPDO::ERRMODE_EXCEPTION に設定されていた場合、PDOException がスローされます。

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

<?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);
$sth->execute();
?>

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

<?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);
$sth->execute();
?>

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

<?php

$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";
?>

参考

To Top