PHP에서 PDO 위치 지정 플레이스홀더
위치 지정 플레이스홀더를 사용하는 방법을 알아봅시다. 쿼리에 삽입하고 싶은 두 개의 변수가 있다고 가정해 보겠습니다:
<?php
$min = 1;
$max = 5;
?>
변수들을 다음과 같이 삽입하고 싶다고 가정해 봅시다:
<?php
$sql = "SELECT * FROM users WHERE id>$min and id<$max";
?>
그러나 이렇게 하는 것은 안전하지 않습니다. 따라서 변수를 직접 삽입하는 대신 물음표로 나타내는 위치 지정 플레이스홀더로 대체하겠습니다:
<?php
$sql = 'SELECT * FROM users WHERE id>? and id<?';
?>
이제 쿼리를 준비하는 명령을 실행합니다:
<?php
$res = $pdo->prepare($sql);
?>
이제 변수를 포함하는 배열을 매개변수로 전달하여 쿼리를 실행합니다. 이때 변수들은 배열에 지정된 순서대로 쿼리에 삽입됩니다:
<?php
$res->execute([$min, $max]);
?>
그 후 쿼리 결과를 얻을 수 있습니다:
<?php
while ($row = $res->fetch()) {
var_dump($row);
}
?>
모든 것을 모아서 다음 코드를 얻습니다:
<?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);
}
?>
다음 변수가 주어졌습니다:
<?php
$age = 30;
$salary = 1000;
?>
나이나 급여가 주어진 변수 값과 같은 모든 사용자를 찾으십시오.
여러분의 코드에 SQL 인젝션을 시도해 보십시오. 통과하지 않을 것임을 확인하십시오.