Maison >développement back-end >tutoriel php >Comment corriger l'erreur « SQLSTATE[HY093] : numéro de paramètre invalide » dans plusieurs insertions ?
Dépannage de l'erreur de base de données : numéro de paramètre non valide
Le problème en question implique une erreur de préparation de requête SQL lors de la tentative d'une opération d'insertion multiple. Plus précisément, le message d'erreur « SQLSTATE[HY093] : numéro de paramètre non valide : le paramètre n'a pas été défini » est rencontré.
Après enquête, il est évident que le nombre d'éléments dans les tableaux $values et $matches ne correspond pas correspondre. Cette différence vient du fait que $values peut contenir des valeurs existantes avant d'entrer dans la boucle. Pour résoudre ce problème, il est impératif d'initialiser $values comme un tableau vide.
De plus, il est conseillé de s'assurer que la colonne "hash" possède un index unique qui lui est appliqué. Cela empêchera l'insertion de valeurs en double dans la base de données.
Voici un extrait de code révisé qui résout ces problèmes :
$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);
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!