bindParam의 변수 평가 시점에 따라 원하지 않은 결과가 나올 수 있다.
참고 : bindParam / bindValue 차이점 - (PHP PDO)
함수에서 배열로 변수를 받아 반복문 사용시 실수 하는 부분이다.(잘못된 예제)
1 2 3 4 5 6 7 8 | $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로 변경시 원하는 결과를 얻을 수 있다.