데이터베이스 테이블에 여러 레코드를 삽입하려고 하면 "잘못된 매개변수 번호: 매개변수가 정의되지 않았습니다." 오류. 이는 쿼리에 지정된 매개변수 수가 입력으로 제공된 값의 수와 일치하지 않을 때 발생합니다.
제공된 코드 조각에서:
$matches = array('1'); $count = count($matches); for($i = 0; $i < $count; ++$i) { $values[] = '(?)'; } // Build query $q = $this->dbc->prepare("INSERT INTO hashes (hash) VALUES " . implode(', ', $values) . " ON DUPLICATE KEY UPDATE hash = hash"); $q->execute($matches);
목표는 준비된 문을 사용하여 $matches의 값을 해시 테이블에 삽입하는 것입니다. 하지만 $values 배열의 자리 표시자 매개변수(?) 개수가 $matches의 실제 데이터와 일치하지 않아 오류가 발생합니다.
이 문제를 해결하려면 다음을 확인하세요. 다음:
$matches = array('1'); $values = []; $count = count($matches); for($i = 0; $i < $count; ++$i) { $values[] = '(?)'; } // Insert query with named parameters (:hash) $sql = "INSERT INTO hashes (hash) VALUES (:hash) ON DUPLICATE KEY UPDATE hash = VALUES(:hash)"; $stmt = $dbh->prepare($sql); $data = $stmt->execute([':hash' => $matches]);
위 내용은 다중 삽입 쿼리에서 '잘못된 매개변수 번호'가 반환되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!