PHPにおけるPDOの位置指定バインド変数

変数を一つずつクエリにバインドすることができます。 これは bindValue メソッドを使用して行われます。 その後、準備されたクエリを実行しますが、 この場合、execute には何も渡されません。

このようなバインドは、変数の型を正確に指定することを可能にし、 数値の引用符による自動ラッピングをキャンセルします。 それがどのように行われるかを見てみましょう。 2つの変数、文字列と数値があるとします:

php<?php
  $name = 'name1';
  $age  = 25;
?>

クエリを準備します:

php<?php
  $sql = 'SELECT * FROM users WHERE name=? or age=?';
  $res = $pdo->prepare($sql);
?>

次に、 bindValue メソッドを使用して 変数をクエリにバインドします。 メソッドの最初のパラメータにはクエリ内の位置番号、 2番目のパラメータには変数名、 3番目のパラメータには変数の型(数値型または文字列型)を指定します:

php<?php
  $res->bindValue(1, $name, PDO::PARAM_INT);
  $res->bindValue(2, $age,  PDO::PARAM_STR);
?>

クエリを実行します:

php<?php
  $res->execute();
?>

結果を見てみましょう:

php<?php
  while ($row = $res->fetch()) {
    var_dump($row);
  }
?>
Задание 1

次の変数が与えられています:

php<?php
  $name1 = 'name1';
  $name2 = 'name2';
?>

名前がこれらの変数のいずれかの値と一致する ユーザーを取得してください。

Задание 2

次の変数が与えられています:

php<?php
  $age1 = 21;
  $age2 = 22;
?>

年齢がこれらの変数のいずれかの値と一致する ユーザーを取得してください。