Dépannage de l'erreur « Numéro de paramètre non valide » dans une requête à insertion multiple
Lors de la préparation d'une requête à insertion multiple, vous pouvez rencontrer l'erreur suivante :
SQLSTATE[HY093] : Numéro de paramètre invalide : le paramètre n'était pas défini
Analyse du problème :
Cette erreur se produit lorsque le nombre d'éléments dans les tableaux $values et $matches ne correspondent pas. L'instruction insert attend un nombre spécifique de paramètres en fonction du nombre d'éléments dans $values, mais les données fournies dans $matches ne correspondent pas à cette attente.
Solution :
Pour résoudre ce problème, assurez-vous que les tableaux $values et $matches ont le même nombre d'éléments. En règle générale, cela implique d'initialiser le tableau $values avant la boucle pour garantir qu'il ne contient aucune valeur préexistante.
De plus, la colonne de hachage dans la table de base de données doit avoir un index unique.
Code refactorisé :
$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);
En adhérant à ces directives, vous pouvez éviter le "Paramètre non valide numéro" et exécutez avec succès votre requête d’insertion multiple.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!