PHPにおけるPDOの名前付きプレースホルダー

便利のために、配列内の変数の順序が重要ではない名前付きプレースホルダーを使用することができます。それらの操作方法を見てみましょう。

再び以下の変数があるとします:

php<?php
  $min = 1;
  $max = 5;
?>

名前付きプレースホルダーを使用してSQLクエリを作成しましょう。その構文は次のとおりです:コロンの後にプレースホルダー名を付けます。クエリでそれらを使用します:

php<?php
  $sql = 'SELECT * FROM users WHERE id>:min and id<:max';
?>

クエリを準備します:

php<?php
  $res = $pdo->prepare($sql);
?>

キーがSQLクエリ内のプレースホルダー名で、値が対応する変数である連想配列をパラメータとして渡してクエリを実行します:

php<?php
  $res->execute([
    'min' => $min,
    'max' => $max
  ]);
?>

結果を確認できます:

php<?php
  while ($row = $res->fetch()) {
    var_dump($row);
  }
?>

すべてをまとめると、次のコードになります:

php<?php
  $min = 1;
  $max = 5;
  
  $sql = 'SELECT * FROM users WHERE id>:min and id<:max';
  $res = $pdo->prepare($sql);
  
  $res->execute([
    'min' => $min,
    'max' => $max
  ]);
  
  while ($row = $res->fetch()) {
    var_dump($row);
  }
?>
Задание 1

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

php<?php
  $age = 30;
?>

年齢が変数で指定された値と等しいすべてのユーザーを見つけてください。

Задание 2

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

php<?php
  $age1 = 20;
  $age2 = 30;
?>

年齢が変数の値で指定された範囲内にあるすべてのユーザーを見つけてください。

Задание 3

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

php<?php
  $age1 = 20;
  $age2 = 30;
  
  $salary1 = 1000;
  $salary2 = 2000;
?>

年齢と給与の両方が変数の値で指定された範囲内にあるすべてのユーザーを見つけてください。