본문 바로가기
개발/PHP

[PHP] PDO BindValue 와 BindParam 의 차이

by 언제나초심. 2016. 2. 9.
반응형

$abc = 'apple';


PDO::BindValue(':aaa',$abc);

PDO::BindParam(':aaa',$abc);


$abc = 'banana';



대충 이런 상황이 있다고 한다면. (위의 예시는 대충 보기 쉽게 생략해서 쓴 구문입니다)


BindValue 는 apple 이라는 값이 들어가고,

BindParam 에는 banana 라는 값이 들어가게 된다. 




이유인즉슨, BindValue 는 값만 복사되서 대입되는 것이고.

BindParam 은 포인터값이 들어가는 개념이기 때문이다. 


이후에 execute(); 를 호출할 때까지 변수에 있던 값이 들어가는게 BindParam 이다. 



Java 에서도 Prepared 하는 방식에서는 마찬가지의 개념이 있던 걸로 기억한다. 


이렇게 나눠놓는 이유는, 잘 구성해놓으면 BindParam 으로, 구문을 미리 다 Prepare 시켜놓고. 사용할 때에만 계속 execute 시켜버리면 되기 때문이다. 


쿼리문을 준비시켜놓고, execute 만 반복시키는게 편한 경우가 생긴다. 예를 들면, 여러건을 처리하거나 할 때에 말이다. 




반응형