PHPにおけるPDOの位置指定バインド変数
変数を一つずつクエリにバインドすることができます。
これは bindValue メソッドを使用して行われます。
その後、準備されたクエリを実行しますが、
この場合、execute には何も渡されません。
このようなバインドは、変数の型を正確に指定することを可能にし、 数値の引用符による自動ラッピングをキャンセルします。 それがどのように行われるかを見てみましょう。 2つの変数、文字列と数値があるとします:
<?php
$name = 'name1';
$age = 25;
?>
クエリを準備します:
<?php
$sql = 'SELECT * FROM users WHERE name=? or age=?';
$res = $pdo->prepare($sql);
?>
次に、 bindValue メソッドを使用して
変数をクエリにバインドします。
メソッドの最初のパラメータにはクエリ内の位置番号、
2番目のパラメータには変数名、
3番目のパラメータには変数の型(数値型または文字列型)を指定します:
<?php
$res->bindValue(1, $name, PDO::PARAM_INT);
$res->bindValue(2, $age, PDO::PARAM_STR);
?>
クエリを実行します:
<?php
$res->execute();
?>
結果を見てみましょう:
<?php
while ($row = $res->fetch()) {
var_dump($row);
}
?>
次の変数が与えられています:
<?php
$name1 = 'name1';
$name2 = 'name2';
?>
名前がこれらの変数のいずれかの値と一致する ユーザーを取得してください。
次の変数が与えられています:
<?php
$age1 = 21;
$age2 = 22;
?>
年齢がこれらの変数のいずれかの値と一致する ユーザーを取得してください。