Heim >Backend-Entwicklung >PHP-Tutorial >Wie behebe ich den Fehler „Ungültige Parameternummer' in MySQL-Mehrfach-INSERT-Abfragen?

Wie behebe ich den Fehler „Ungültige Parameternummer' in MySQL-Mehrfach-INSERT-Abfragen?

Susan Sarandon
Susan SarandonOriginal
2024-12-27 12:13:10769Durchsuche

How to Fix the

Fehlerbehebung beim Fehler „Ungültige Parameternummer“ bei Mehrfacheinfügungsabfrage

Beim Vorbereiten einer Mehrfacheinfügungsabfrage kann der folgende Fehler auftreten:

SQLSTATE[HY093]: Ungültige Parameternummer: Parameter war nicht vorhanden definiert

Problemanalyse:

Dieser Fehler tritt auf, wenn die Anzahl der Elemente in den Arrays $values ​​und $matches nicht übereinstimmt. Die insert-Anweisung erwartet eine bestimmte Anzahl von Parametern basierend auf der Anzahl der Elemente in $values, aber die in $matches bereitgestellten Daten stimmen nicht mit dieser Erwartung überein.

Lösung:

Um dieses Problem zu beheben, stellen Sie sicher, dass sowohl die Arrays $values ​​als auch $matches die gleiche Anzahl von Elementen haben. Normalerweise beinhaltet dies die Initialisierung des $values-Arrays vor der Schleife, um sicherzustellen, dass es keine bereits vorhandenen Werte enthält.

Außerdem sollte die Hash-Spalte in der Datenbanktabelle einen eindeutigen Index haben.

Refactored Code:

$matches = array('1');
$count = count($matches);
$values = [];

for ($i = 0; $i < $count; ++$i) {
    $values[] = '(?)';
}

$sql = "INSERT INTO hashes (hash) VALUES " . implode(', ', $values) . " ON DUPLICATE KEY UPDATE hash=values(hash)";
$stmt = $dbh->prepare($sql);
$data = $stmt->execute($matches);

Durch die Einhaltung dieser Richtlinien können Sie das vermeiden Fehler „Ungültige Parameternummer“ und führen Sie Ihre Mehrfacheinfügungsabfrage erfolgreich aus.

Das obige ist der detaillierte Inhalt vonWie behebe ich den Fehler „Ungültige Parameternummer' in MySQL-Mehrfach-INSERT-Abfragen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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