PDO 예외: PHP의 잘못된 매개변수 번호
PHP를 사용하려고 할 때 "SQLSTATE[HY093]: 잘못된 매개변수 번호" 오류 발생 PDO? 근본 원인은 준비된 문의 매개변수 사용과 관련이 있을 수 있습니다.
문제 설명:
제공된 코드 조각에:
$sql = "INSERT INTO persist (user_id, hash, expire) VALUES (:user_id, :hash, :expire) ON DUPLICATE KEY UPDATE hash=:hash";
다음이 있습니다. UPDATE 절에 ":hash2" 매개변수 표시가 없습니다. PDO에는 문에 바인딩될 각 값에 대해 고유한 매개 변수 표시자가 필요하기 때문에 이러한 불일치로 인해 PDO 예외가 발생합니다.
해결책:
다음과 같이 준비된 문의 SQL 쿼리를 조정합니다. 다음:
$sql = "INSERT INTO persist (user_id, hash, expire) VALUES (:user_id, :hash, :expire) ON DUPLICATE KEY UPDATE hash=:hash2";
따라서 다음을 포함하도록 Execute() 문을 수정합니다. ":hash2" 매개변수 표시:
$stm->execute( array( ":user_id" => $user_id, ":hash" => $hash, ":expire" => $future, ":hash2" => $hash ) );
배경:
PDO의 prepare() 메소드에는 실행() 호출 시 값을 바인딩하기 위한 고유한 매개변수 표시가 필요합니다. 반복되는 매개변수 표시자를 사용할 수 없으며, "IN()" 절과 같은 절에서는 동일한 매개변수에 여러 값을 할당하는 것이 지원되지 않습니다.
위 내용은 내 PHP PDO 준비 명령문에서 '잘못된 매개변수 번호'가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!