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로 변경시 원하는 결과를 얻을 수 있다.