PHP의 PDO에서 변수의 위치 바인딩
변수를 쿼리에 하나씩 바인딩할 수 있습니다.
이는 bindValue 메서드를 사용하여 수행됩니다.
그런 다음 얻은 쿼리를 실행하지만,
이 경우 execute에는 아무것도 전달되지 않습니다.
이러한 바인딩을 통해 변수의 유형을 정확하게 지정할 수 있으며, 숫자 값에 대한 자동 따옴표 감싸기를 취소합니다. 이것이 어떻게 수행되는지 살펴보겠습니다. 문자열 변수와 숫자 변수 두 개가 있다고 가정해 보겠습니다:
<?php
$name = 'name1';
$age = 25;
?>
쿼리를 준비합니다:
<?php
$sql = 'SELECT * FROM users WHERE name=? or age=?';
$res = $pdo->prepare($sql);
?>
이제 bindValue 메서드를 사용하여
변수를 쿼리에 바인딩합니다.
메서드의 첫 번째 매개변수에는 쿼리의 위치 번호가 지정되고,
두 번째 매개변수에는 변수 이름이,
세 번째 매개변수에는 변수 유형(숫자 또는 문자열)이 지정됩니다:
<?php
$res->bindValue(1, $name, PDO::PARAM_INT);
$res->bindValue(2, $age, PDO::PARAM_STR);
?>
쿼리를 실행합니다:
<?php
$res->execute();
?>
결과를 확인합니다:
<?php
while ($row = $res->fetch()) {
var_dump($row);
}
?>
다음 변수가 주어집니다:
<?php
$name1 = 'name1';
$name2 = 'name2';
?>
이름이 첫 번째 또는 두 번째 변수의 값과 일치하는 사용자를 가져옵니다.
다음 변수가 주어집니다:
<?php
$age1 = 21;
$age2 = 22;
?>
나이가 첫 번째 또는 두 번째 변수의 값과 일치하는 사용자를 가져옵니다.