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 중국어 웹사이트의 기타 관련 기사를 참조하세요!