Lorsque vous essayez d'insérer plusieurs enregistrements dans une table de base de données, vous pouvez rencontrer le "Numéro de paramètre non valide : le paramètre n'a pas été défini" erreur. Cela se produit lorsque le nombre de paramètres spécifiés dans la requête ne correspond pas au nombre de valeurs fournies en entrée.
Dans l'extrait de code fourni :
$matches = array('1'); $count = count($matches); for($i = 0; $i < $count; ++$i) { $values[] = '(?)'; } // Build query $q = $this->dbc->prepare("INSERT INTO hashes (hash) VALUES " . implode(', ', $values) . " ON DUPLICATE KEY UPDATE hash = hash"); $q->execute($matches);
Le but est d'insérer la valeur de $matches dans la table de hachage, à l'aide d'une instruction préparée. Cependant, l'erreur se produit car le nombre de paramètres d'espace réservé (?) dans le tableau $values ne correspond pas aux données réelles dans $matches.
Pour résoudre ce problème, assurez-vous que le suivant :
$matches = array('1'); $values = []; $count = count($matches); for($i = 0; $i < $count; ++$i) { $values[] = '(?)'; } // Insert query with named parameters (:hash) $sql = "INSERT INTO hashes (hash) VALUES (:hash) ON DUPLICATE KEY UPDATE hash = VALUES(:hash)"; $stmt = $dbh->prepare($sql); $data = $stmt->execute([':hash' => $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!