add_persist 함수를 실행하려고 하면 개발자에게 "SQLSTATE[HY093]: 잘못된 매개변수 번호"라는 오류가 발생할 수 있습니다. 이 오류는 SQL 쿼리 내의 잘못된 매개변수 바인딩으로 인해 발생합니다.
제공된 코드에서 $sql 문은 INSERT 및 ON DUPLICATE KEY UPDATE 명령을 실행하여 지속 테이블의 행을 업데이트하려고 시도합니다. 그러나 $stm->execute 호출 내의 매개변수 바인딩에는 불일치가 있습니다. 특히 :hash 매개변수는 두 번 나타나지만 PDO 문서에 따르면 각 고유 매개변수 표시자는 값에 한 번만 바인딩되어야 합니다.
이 문제를 해결하려면 고유한 매개변수를 포함하도록 $sql 쿼리를 수정해야 합니다. 전달되는 각 값에 대한 매개변수 표시자는 다음과 같습니다.
$sql = "INSERT INTO persist (user_id, hash, expire) VALUES (:user_id, :hash, :expire) ON DUPLICATE KEY UPDATE hash=:hash2";
또한 $stm->execute 호출에는 :hash 및 :hash2 모두에 대한 바인딩이 포함되어야 합니다. 매개변수:
$stm->execute( array(":user_id" => $user_id, ":hash" => $hash, ":expire" => $future, ":hash2" => $hash) );
이 매개변수 바인딩 문제를 해결함으로써 add_persist 함수는 "잘못된 매개변수 번호" 오류를 발생시키지 않고 SQL 쿼리를 올바르게 실행합니다.
위 내용은 내 PHP PDO 코드에서 'SQLSTATE[HY093]: 잘못된 매개변수 번호' 오류가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!