PHP에서 PDO 위치 지정 플레이스홀더

위치 지정 플레이스홀더를 사용하는 방법을 알아봅시다. 쿼리에 삽입하고 싶은 두 개의 변수가 있다고 가정해 보겠습니다:

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

변수들을 다음과 같이 삽입하고 싶다고 가정해 봅시다:

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

그러나 이렇게 하는 것은 안전하지 않습니다. 따라서 변수를 직접 삽입하는 대신 물음표로 나타내는 위치 지정 플레이스홀더로 대체하겠습니다:

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

이제 쿼리를 준비하는 명령을 실행합니다:

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

이제 변수를 포함하는 배열을 매개변수로 전달하여 쿼리를 실행합니다. 이때 변수들은 배열에 지정된 순서대로 쿼리에 삽입됩니다:

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

그 후 쿼리 결과를 얻을 수 있습니다:

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

모든 것을 모아서 다음 코드를 얻습니다:

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

다음 변수가 주어졌습니다:

php<?php
  $age = 30;
  $salary = 1000;
?>

나이나 급여가 주어진 변수 값과 같은 모든 사용자를 찾으십시오.

Задание 2

여러분의 코드에 SQL 인젝션을 시도해 보십시오. 통과하지 않을 것임을 확인하십시오.