bindParam과 bindValue의 차이점은 무엇입니까?
PHPbindParam과 bindValue의 차이점은 무엇입니까?
PDOStatement :: bindParam ()과 PDOStatement :: bindValue ()의 차이점은 무엇입니까?
해결법
-
==============================
1.대답은 bindParam의 설명서에 있습니다.
대답은 bindParam의 설명서에 있습니다.
실행
-
==============================
2.PDOStatement :: bindParam에 대한 수동 항목에서 :
PDOStatement :: bindParam에 대한 수동 항목에서 :
예를 들면 다음과 같습니다.
$sex = 'male'; $s = $dbh->prepare('SELECT name FROM students WHERE sex = :sex'); $s->bindParam(':sex', $sex); // use bindParam to bind the variable $sex = 'female'; $s->execute(); // executed with WHERE sex = 'female'
또는
$sex = 'male'; $s = $dbh->prepare('SELECT name FROM students WHERE sex = :sex'); $s->bindValue(':sex', $sex); // use bindValue to bind the variable's value $sex = 'female'; $s->execute(); // executed with WHERE sex = 'male'
-
==============================
3.다음은 내가 생각할 수있는 몇 가지 예입니다.
다음은 내가 생각할 수있는 몇 가지 예입니다.
일부 DB 엔진의 경우 저장 프로 시저에는 입력 (PHP에서 프로 시저로 값 지정) 및 출력 (저장 프로 시저에서 PHP로 값 반환)에 사용할 수있는 매개 변수가있을 수 있습니다. 이러한 매개 변수를 바인딩하려면 bindValue가 아니라 bindParam을 사용해야합니다.
-
==============================
4.가장 일반적인 목적으로 bindValue를 사용해야합니다.
가장 일반적인 목적으로 bindValue를 사용해야합니다.
bindParam에는 두 가지 까다로운 예기치 않은 동작이 있습니다.
출처 : http://php.net/manual/en/pdostatement.bindparam.php#94711
-
==============================
5.Prepared 문과 저장 프로 시저에서
Prepared 문과 저장 프로 시저에서
bindParam을 사용하여 하나의 시간 바인딩을 사용하여 여러 행을 삽입하십시오.
<?php $stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (?, ?)"); $stmt->bindParam(1, $name); $stmt->bindParam(2, $value); // insert one row $name = 'one'; $value = 1; $stmt->execute(); // insert another row with different values $name = 'two'; $value = 2; $stmt->execute();
-
==============================
6.이런 식으로 존재할 때 더 이상 고생 할 필요가 없습니다.
이런 식으로 존재할 때 더 이상 고생 할 필요가 없습니다.
$stmt = $pdo->prepare("SELECT * FROM someTable WHERE col = :val"); $stmt->execute([":val" => $bind]);
-
==============================
7.PHP를 사용하는 가장 간단한 방법은 다음과 같습니다.
PHP를 사용하는 가장 간단한 방법은 다음과 같습니다.
-
==============================
8.bindParam ()에 대한 문서에서 읽을 수있는 두 가지 메소드의 주요 차이점은 프로 시저 호출에서 매개 변수 변수가 전달되는 방법입니다.
bindParam ()에 대한 문서에서 읽을 수있는 두 가지 메소드의 주요 차이점은 프로 시저 호출에서 매개 변수 변수가 전달되는 방법입니다.
bindParam () 메서드는 매개 변수 마커를 값 자체가 아닌 출력 값을 보유 할 PHP 변수의 이름에 바인딩합니다. 또한 PDOStatement :: execute ()가 호출 될 때만 값이 평가됩니다.
반대로, bindValue () 메소드는 참조하는 PHP 변수의 값에 매개 변수 마커를 바인드하므로 PDOStatement :: execute ()가 호출 될 때 즉시 사용할 수 있습니다.
bindParam () 메서드를 사용할 때 매개 변수가 OUT 매개 변수 인 경우 저장 프로 시저에서 값을 가져 오는 변수에 바인드한다는 의미이므로 길이 매개 변수 문서에 명시된대로 길이를 명시 적으로 설정해야합니다 :
데이터베이스에 정의 된 예상 최대 길이와 일치하도록 출력 매개 변수의 길이를 설정해야합니다.
from https://stackoverflow.com/questions/1179874/what-is-the-difference-between-bindparam-and-bindvalue by cc-by-sa and MIT license
'PHP' 카테고리의 다른 글
PHP에서 연결된 클라이언트의 MAC 주소와 IP 주소를 얻으려면 어떻게해야합니까? (0) | 2018.09.06 |
---|---|
치명적인 오류 : 최대 실행 시간이 30 초를 초과했습니다. (0) | 2018.09.06 |
정규식을 사용하여 문자열의 모든 YouTube 동영상 ID를 찾으려면 어떻게해야하나요? (0) | 2018.09.06 |
PHP는 "PHP는 : / / 입력"대 $ _POST (0) | 2018.09.06 |
PHP에서 이스케이프 인용 부호 (0) | 2018.09.06 |