PHP PDO에서 잘못된 매개변수 번호 오류
PDO를 사용하여 준비된 명령문을 실행하려고 하면 "SQLSTATE[HY093" 오류가 발생할 수 있습니다. ]: 잘못된 매개변수 번호입니다." 이 문제는 매개변수 마커의 잘못된 사용으로 인해 발생합니다.
제공된 add_persist 함수는 다음과 같은 준비된 명령문을 사용합니다.
INSERT INTO persist (user_id, hash, expire) VALUES (:user_id, :hash, :expire) ON DUPLICATE KEY UPDATE hash=:hash
execute() 메서드를 사용하여 매개변수 값을 바인딩할 때 함수는 다음 값을 사용합니다.
["user_id" => $user_id, "hash" => $hash, "expire" => $future]
그러나 준비된 명령문에는 PDO에서 허용되지 않는 해시에 대한 중복 매개변수 표시가 포함되어 있습니다. 이 문제를 해결하려면 전달되는 각 값에 고유한 매개변수 표시자를 할당해야 합니다.
수정된 코드는 다음과 같습니다.
$sql = "INSERT INTO persist (user_id, hash, expire) VALUES (:user_id, :hash, :expire) ON DUPLICATE KEY UPDATE hash=:hash2"; $stm = $db->prepare($sql); $stm->execute( array("user_id" => $user_id, "hash" => $hash, "expire" => $future, "hash2" => $hash) );
추가 매개변수 :hash2를 사용하면 준비된 명령문에 매개변수 표시자가 중복되어 오류가 해결되었습니다.
위 내용은 내 PHP PDO 준비 명령문에서 \'잘못된 매개변수 번호\' 오류가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!