Heim > Datenbank > MySQL-Tutorial > Warum gibt meine Mehrfacheinfügungsabfrage trotz übereinstimmender Parameteranzahlen den Fehler „Ungültige Parameternummer' aus?

Warum gibt meine Mehrfacheinfügungsabfrage trotz übereinstimmender Parameteranzahlen den Fehler „Ungültige Parameternummer' aus?

Barbara Streisand
Freigeben: 2024-12-28 01:46:09
Original
151 Leute haben es durchsucht

Why Does My Multiple Insert Query Throw an

Fehlerbehandlung: „Ungültige Parameternummer“ in Mehrfacheinfügungsabfrage

Beim Versuch, eine Mehrfacheinfügungsabfrage durchzuführen, ist es wichtig, dies sicherzustellen Die Anzahl der Parameterwerte entspricht der Anzahl der Platzhalter in der Abfrage selbst. Im folgenden Code tritt jedoch der Fehler „SQLSTATE[HY093]: Ungültige Parameternummer: Parameter wurde nicht definiert“ auf, obwohl kurz vor der Ausführung der Abfrage bestätigt wurde, dass count($matches) und count($values) gleich sind.

// BUILD VALUES
$count = count($matches);
for($i = 0; $i < $count; ++$i) {
    $values[] = '(?)';
}
// INSERT INTO DATABASE
$q = $this->dbc->prepare("INSERT INTO hashes (hash) VALUES " . implode(', ', $values) . " ON DUPLICATE KEY UPDATE hash = hash");
$q->execute($matches);
Nach dem Login kopieren

Die Diskrepanz zwischen dem Code und der Fehlermeldung ist auf ein potenzielles Problem bei der Initialisierung des $values-Arrays zurückzuführen. Es ist wahrscheinlich, dass $values ​​bereits einige Daten enthält, was zu einer Nichtübereinstimmung der Anzahl führt. Um dies zu verhindern, ist es wichtig, Arrays immer vor der Schleife zu initialisieren.

Um das Problem zu beheben, berücksichtigen Sie den folgenden geänderten Code:

$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);
Nach dem Login kopieren

Zusätzlich, um die Meldung „Ungültige Parameternummer“ zu vermeiden. Wenn bei mehreren Einfügeabfragen ein Fehler auftritt, stellen Sie sicher, dass für die Spalte, die für doppelte Schlüsselaktualisierungen verwendet wird (in diesem Fall Hash), ein eindeutiger Index definiert ist. Andernfalls kann es zu unerwartetem Verhalten und möglichen Fehlern kommen.

Das obige ist der detaillierte Inhalt vonWarum gibt meine Mehrfacheinfügungsabfrage trotz übereinstimmender Parameteranzahlen den Fehler „Ungültige Parameternummer' aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage