Source php
seydou
-
^Abel^ Messages postés 15278 Date d'inscription Statut Contributeur Dernière intervention -
^Abel^ Messages postés 15278 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
ci-dessous le message d'erreur
ERROR :SQLSTATE[HY093]: Invalid parameter number: parameter was not defined
EDIT : Ajout des balises de code
<?php
try {
$connect= new PDO("mysql:host=localhost; dbname=donnees; charset=utf8", 'root', '');
$connect->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
if ($connect) {
echo "reussie!";
}
$nom=htmlspecialchars($_POST['nom']);
$prenom=htmlspecialchars($_POST['prenoms']);
$email=htmlspecialchars($_POST['email']);
$daten=htmlspecialchars($_POST['daten']);
$fonction=htmlspecialchars($_POST['fonction']);
$matricule=htmlspecialchars($_POST['matricule']);
$mot_passe=sha1($_POST['password']);
$confirmation=sha1($_POST['mdp']);
$requete=$connect->prepare("INSERT INTO coordonnees(nom, prenoms, email, date_n, fonction, matricule, mot_passe, confirmation) VALUES (:nom, :prenoms, :email, :daten, :fonction, :matricule, :password, :mdp)");
$requete->execute(array('nom' => $nom ,
'prenom' => $prenom ,
'email' => $email ,
'daten' => $daten ,
'fonction' => $fonction ,
'matricule' => $matricule ,
'password' => $mot_passe ,
'mdp' => $confirmation ,));
} catch (Exception $e) {
die('ERROR :' .$e->getMessage());
}
?>
ci-dessous le message d'erreur
ERROR :SQLSTATE[HY093]: Invalid parameter number: parameter was not defined
EDIT : Ajout des balises de code
2 réponses
-
Bonjour,
Il y aurait beaucoup de choses à dire sur ton code....
Comme le fait qu'on n'utilise PAS la fonction htmlspecialchar pour insérer des données ( on ne s'en sert que pour de l'affichage !! )
mais déjà, concernant l'erreur.... c'est du au fait que tu n'as pas utilisé les même noms de variables dans la requete ET dans l'array de l'execute...
Voici$sql = "INSERT INTO coordonnees(nom, prenoms, email, date_n, fonction, matricule, mot_passe, confirmation) VALUES (:nom, :prenoms, :email, :daten, :fonction, :matricule, :password, :mdp)"; $datas = array( ':nom' => $nom , ':prenoms' => $prenom , ':email' => $email , ':daten' => $daten , ':fonction' => $fonction , ':matricule' => $matricule , ':password' => $mot_passe , ':mdp' => $confirmation ); try{ $requete=$connect->prepare($sqm); $requete->execute($datas); }catch (Exception $e) { die('ERROR :' .$e->getMessage()); }
et on n’utilise pas le sha1 pour les passwords !
Désormais il faut passer par password_verify et password_hash.
(pour que ça fonctionne correctement il faut une version php supérieur à 5.5 )
https://www.php.net/manual/fr/function.password-hash.php
Dans l'idéal, on travaille désormais en php 7 ( 7.3 ) qui est trois fois plus rapide que la version php 5
-
Bonjour.
Seydou répond ici ;)
https://www.commentcamarche.net/forum/affich-35962386-remerciment