Beim Versuch, mehrere Datensätze in eine Datenbanktabelle einzufügen, kann die Fehlermeldung „Ungültige Parameternummer:“ auftreten. Parameter wurde nicht definiert" Fehler. Dies tritt auf, wenn die Anzahl der in der Abfrage angegebenen Parameter nicht mit der Anzahl der als Eingabe bereitgestellten Werte übereinstimmt.
Im bereitgestellten Codeausschnitt:
$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);
Das Ziel besteht darin, den Wert in $matches mithilfe einer vorbereiteten Anweisung in die Hashes-Tabelle einzufügen. Der Fehler tritt jedoch auf, weil die Anzahl der Platzhalterparameter (?) im Array $values nicht den tatsächlichen Daten in $matches entspricht.
Um dieses Problem zu beheben, stellen Sie sicher, dass Folgendes:
$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]);
Das obige ist der detaillierte Inhalt vonWarum gibt meine Mehrfacheinfügungsabfrage „Ungültige Parameternummer' zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!