728x90
PDO(PHP Data Objects)에서 Prepared statements 사용 시 값을 bind 하기 위해 PDOStatement::bindParam 또는 PDOStatement::bindValue를 주로 사용합니다.
두 개의 함수는 사용법이 거의 유사해서 어떤 차이가 있는지 헷갈려서 정리해봅니다.
아래의 예시를 보면 정확한 차이를 바로 알 수 있습니다.
bindParam
<?php
$sex = 'male';
$stmt = $db->prepare('SELECT name FROM students WHERE sex = :sex');
$stmt->bindParam(':sex', $sex); // use bindParam to bind the variable
$sex = 'female';
$stmt->execute(); // executed with WHERE sex = 'female'
?>
bindValue
<?php
$sex = 'male';
$stmt = $db->prepare('SELECT name FROM students WHERE sex = :sex');
$stmt->bindValue(':sex', $sex); // use bindValue to bind the variable's value
$sex = 'female';
$stmt->execute(); // executed with WHERE sex = 'male'
?>
결론은 PDOStatement::bindParam은 변수의 레퍼런스로 바인딩되므로 PDOStatement::execute가 호출될 때 값이 반영됩니다.
bindParam은 execute()가 실행되기 적전의 변수를 할당합니다.
bindValue는 bindValue함수가 실행된 시점에서 담겨져있는 변수를 전달합니다.
728x90
'PHP' 카테고리의 다른 글
38. PHP PhpSpreadsheet 설치하기 & 예제 코드 (0) | 2021.09.09 |
---|---|
37. PHP File Upload(파일 업로드 폼, 파일 업로드 로직, 파입 업로드 제약걸기) (0) | 2021.08.11 |
35. PHP 비밀번호 암호화&복호화 password_hash, password_verify (0) | 2021.08.03 |
34. PHP PDO insert, update, delete 한 행 수 확인하기 (0) | 2021.07.29 |
34. PHP 변수에서 숫자만 추출하기 (0) | 2021.07.23 |