bindParam의 변수 평가 시점에 따라 원하지 않은 결과가 나올 수 있다.
참고 : bindParam / bindValue 차이점 - (PHP PDO)
함수에서 배열로 변수를 받아 반복문 사용시 실수 하는 부분이다.(잘못된 예제)
$a['a'] = ':0';
$a['b'] = ':1';
$a['c'] = ':2';
$sth = $sth->prepare('SELECT name FROM students WHERE number_idx IN(".implode(",",$a).")');
foreach($a as $key=>$value) {
$sth->bindParam($value,$key,PDO::PARAM_INT);
}
$sth->execute();
반복문을 실행시키더라도 execute(); 구문에서 변수가 평가되어 결과적으로 예상하지 않은 결과과 나오게 된다. bindValue로 변경시 원하는 결과를 얻을 수 있다.