>백엔드 개발 >PHP 튜토리얼 >내 PHP PDO 코드에서 \'SQLSTATE[HY093]: 잘못된 매개변수 번호\' 오류가 발생하는 이유는 무엇입니까?

내 PHP PDO 코드에서 \'SQLSTATE[HY093]: 잘못된 매개변수 번호\' 오류가 발생하는 이유는 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-24 15:50:17968검색

Why Am I Getting a

오류: PHP PDOException의 잘못된 매개변수 번호

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

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