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

변수 값으로 지정된 범위 내에 나이와 급여가 모두 있는 모든 사용자를 찾으세요.