PHP의 PDO에서 변수의 위치 바인딩

변수를 쿼리에 하나씩 바인딩할 수 있습니다. 이는 bindValue 메서드를 사용하여 수행됩니다. 그런 다음 얻은 쿼리를 실행하지만, 이 경우 execute에는 아무것도 전달되지 않습니다.

이러한 바인딩을 통해 변수의 유형을 정확하게 지정할 수 있으며, 숫자 값에 대한 자동 따옴표 감싸기를 취소합니다. 이것이 어떻게 수행되는지 살펴보겠습니다. 문자열 변수와 숫자 변수 두 개가 있다고 가정해 보겠습니다:

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

쿼리를 준비합니다:

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

이제 bindValue 메서드를 사용하여 변수를 쿼리에 바인딩합니다. 메서드의 첫 번째 매개변수에는 쿼리의 위치 번호가 지정되고, 두 번째 매개변수에는 변수 이름이, 세 번째 매개변수에는 변수 유형(숫자 또는 문자열)이 지정됩니다:

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

나이가 첫 번째 또는 두 번째 변수의 값과 일치하는 사용자를 가져옵니다.