> 데이터 베이스 > MySQL 튜토리얼 > 내 PHP PDO 준비 명령문에서 '잘못된 매개변수 번호'가 발생하는 이유는 무엇입니까?

내 PHP PDO 준비 명령문에서 '잘못된 매개변수 번호'가 발생하는 이유는 무엇입니까?

Linda Hamilton
풀어 주다: 2024-12-08 07:22:11
원래의
330명이 탐색했습니다.

Why Does My PHP PDO Prepared Statement Throw

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

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿