준비된 다중 삽입 쿼리에서 "SQLSTATE[HY093]: 잘못된 매개 변수 번호" 오류 해결
다중 삽입 쿼리를 실행하려고 할 때, "SQLSTATE[HY093]: 잘못된 매개변수 번호: 매개변수가 정의되지 않았습니다."라는 오류가 발생할 수 있습니다. 매개변수 배열과 입력 데이터 요소의 개수가 일치함에도 불구하고 이 오류가 지속됩니다.
오류 이해
이 오류는 매개변수 배열의 개수 불일치로 인해 발생합니다. 매개변수 배열($values) 및 입력 데이터($matches)의 요소입니다. 준비된 문을 실행할 때 쿼리는 특정 개수의 매개변수를 예상하며 불일치가 있으면 이 오류가 발생합니다.
문제 해결
이 문제를 해결하려면, 매개변수를 생성하는 루프를 시작하기 전에 $values가 초기화되었는지 확인하세요. 이렇게 하면 기존 값이 개수에 영향을 미치는 것을 방지할 수 있습니다. 또한 데이터베이스의 "해시" 열에 고유 인덱스가 있는지 확인하면 잠재적인 충돌을 더욱 예방할 수 있습니다.
수정된 코드
수정된 코드는 다음과 같습니다. 다음 개정판 통합:
$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 중국어 웹사이트의 기타 관련 기사를 참조하세요!