Maison >développement back-end >tutoriel php >Comment corriger l'erreur « SQLSTATE[HY093] : numéro de paramètre invalide » dans plusieurs insertions ?

Comment corriger l'erreur « SQLSTATE[HY093] : numéro de paramètre invalide » dans plusieurs insertions ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-05 06:17:12343parcourir

How to Fix

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn