Dans le code fourni, l'erreur se produit lors de l'exécution d'une requête à insertion multiple en raison d'une incompatibilité de paramètres entre les valeurs insérées et le nombre attendu de paramètres dans la requête.
Le code génère un tableau d'espaces réservés ($values) basé sur le nombre de correspondances ($matches). Cependant, s'il y a déjà du contenu dans le tableau $values, cela peut entraîner une différence de nombre, provoquant l'erreur.
Pour résoudre ce problème :
Toujours initialiser le tableau $values à un état vide avant de l'utiliser dans le boucle.
$values = [];
$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 implémentant ces modifications, le code devrait s'exécuter avec succès sans rencontrer l'erreur d'incompatibilité des paramètres.
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!