> 백엔드 개발 > PHP 튜토리얼 > 준비된 다중 INSERT 쿼리에 'SQLSTATE[HY093]: 잘못된 매개 변수 번호'가 표시되는 이유는 무엇입니까?

준비된 다중 INSERT 쿼리에 'SQLSTATE[HY093]: 잘못된 매개 변수 번호'가 표시되는 이유는 무엇입니까?

Patricia Arquette
풀어 주다: 2024-12-09 00:25:10
원래의
934명이 탐색했습니다.

Why Am I Getting

준비된 다중 삽입 쿼리에서 "SQLSTATE[HY093]: 잘못된 매개 변수 번호" 오류 해결

다중 삽입 쿼리를 실행하려고 할 때, "SQLSTATE[HY093]: 잘못된 매개변수 번호: 매개변수가 정의되지 않았습니다."라는 오류가 발생할 수 있습니다. 매개변수 배열과 입력 데이터 요소의 개수가 일치함에도 불구하고 이 오류가 지속됩니다.

오류 이해

이 오류는 매개변수 배열의 개수 불일치로 인해 발생합니다. 매개변수 배열($values) 및 입력 데이터($matches)의 요소입니다. 준비된 문을 실행할 때 쿼리는 특정 개수의 매개변수를 예상하며 불일치가 있으면 이 오류가 발생합니다.

문제 해결

이 문제를 해결하려면, 매개변수를 생성하는 루프를 시작하기 전에 $values가 초기화되었는지 확인하세요. 이렇게 하면 기존 값이 개수에 영향을 미치는 것을 방지할 수 있습니다. 또한 데이터베이스의 "해시" 열에 고유 인덱스가 있는지 확인하면 잠재적인 충돌을 더욱 예방할 수 있습니다.

수정된 코드

수정된 코드는 다음과 같습니다. 다음 개정판 통합:

1

2

3

4

5

6

7

8

9

10

11

$matches = array('1');

$count = count($matches);

$values = [];

for ($i = 0; $i < $count; ++$i) {

    $values[] = '(?)';

}

 

// INSERT INTO DATABASE

$sql = "INSERT INTO hashes (hash) VALUES " . implode(', ', $values) . " ON DUPLICATE KEY UPDATE hash=values(hash)";

$stmt = $dbh->prepare($sql);

$data = $stmt->execute($matches);

로그인 후 복사

위 내용은 준비된 다중 INSERT 쿼리에 'SQLSTATE[HY093]: 잘못된 매개 변수 번호'가 표시되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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