>데이터 베이스 >MySQL 튜토리얼 >PDO에서 상수 값으로 `bindParam`이 실패하는 이유는 무엇입니까?

PDO에서 상수 값으로 `bindParam`이 실패하는 이유는 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-05 03:21:10999검색

Why Does `bindParam` Fail with Constant Values in PDO?

PDO의 상수 값에 대한 bindParam 오류

bindParam을 PDO::PARAM_NULL과 같은 상수 값과 함께 사용하려고 하면 개발자가 다음을 수행할 수 있습니다. "매개변수 2를 전달할 수 없습니다"라는 오류가 발생합니다. reference."

오류가 있는 코드 조각

try {
    $dbh = new PDO('mysql:dbname=' . DB . ';host=' . HOST, USER, PASS);
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $dbh->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND, "SET NAMES 'utf8'");
}
catch(PDOException $e)
{
    ...
}
$stmt = $dbh->prepare('INSERT INTO table(v1, v2, ...) VALUES(:v1, :v2, ...)');
$stmt->bindParam(':v1', PDO::PARAM_NULL); // --> Here's the problem

Solution

bindParam이 변수를 사용하기 때문에 오류가 발생합니다. 참조로 사용되며 호출 시 값을 검색하지 않습니다. 상수 값을 바인딩하는 올바른 방법은 bindValue입니다.

수정된 코드

$stmt->bindValue(':v1', null, PDO::PARAM_INT);

참고:

사용하지 마세요. 바인딩값(':param', null, PDO::PARAM_NULL), 그렇지 않을 수도 있습니다. 믿을 수 있습니다.

위 내용은 PDO에서 상수 값으로 `bindParam`이 실패하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.