Connection base de donnees

Résolu/Fermé
sylvesterseni Messages postés 17 Date d'inscription jeudi 18 septembre 2014 Statut Membre Dernière intervention 1 juin 2017 - 18 nov. 2014 à 15:01
sylvesterseni Messages postés 17 Date d'inscription jeudi 18 septembre 2014 Statut Membre Dernière intervention 1 juin 2017 - 18 nov. 2014 à 21:23
jai un probleme avec mon code
c 'est ce qui apparait lorsqu' on clique sur le bouton envoyer
" Erreur : SQLSTATE[HY093]: Invalid parameter number: parameter was not defined "
j aimerais savoir ce que cela signifie et comment resoudre le probleme svp


mon code est le suivant :
<?php
try
{
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd= new PDO('mysql:host=localhost;dbname=adhesion', 'root', '' , $pdo_options);
$req=$bdd ->prepare ('INSERT INTO membre (ami,nom,info,precision,motivation, monsieur,name , prenom , Adresse, ville, Commune,
cellulaire,telephone,email,date_naissance,profession,cheque) VALUES (:ami, :nom,:info,:precision,:motivation,:monsieur,:name
, :prenom , :Adresse, :ville, :Commune, :cellulaire,:telephone,:email,:date_naissance,:profession,:cheque)');
$req ->execute( array( $_POST['ami'],$_POST['nom'],$_POST['info'],$_POST['precision'],$_POST['motivation'],$_POST['monsieur'],
$_POST['name'],$_POST['prenom'],$_POST['Adresse'],$_POST['ville'],$_POST['Commune'],$_POST['cellulaire'],$_POST['telephone'],
$_POST['email'],$_POST['date_naissance'],$_POST['profession'],$_POST['cheque']));
echo'Inscription effectuée avec succes Bienvenue ! ';
}

catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
?>

5 réponses

Utilisateur anonyme
18 nov. 2014 à 16:03
Bonjour

Tu as cette erreur parce que tu as utilisé des paramètres nommés dans ta requête préparée (:ami,:nom...). Tu DOIS donc utiliser un tableau associatif pour l'exécution de la requête :
 array( ':ami'=>$_POST['ami'],':nom'=>$_POST['nom'],...

et non pas simplement
 array( $_POST['ami'],$_POST['nom'],...


Sinon, mysql ne sait pas à quel paramètre nommé correspond chacune des valeurs de ton array.
0
sylvesterseni Messages postés 17 Date d'inscription jeudi 18 septembre 2014 Statut Membre Dernière intervention 1 juin 2017
18 nov. 2014 à 20:55
merci je revois et je vous fais signe
0
Liightman Messages postés 49 Date d'inscription lundi 17 novembre 2014 Statut Membre Dernière intervention 7 janvier 2016 9
18 nov. 2014 à 17:51
Penses la prochaine fois à mettre ton script dans les balises <code> s'il te plaît et à également marqué ton sujet comme résolu ;)
0
sylvesterseni Messages postés 17 Date d'inscription jeudi 18 septembre 2014 Statut Membre Dernière intervention 1 juin 2017
18 nov. 2014 à 20:52
ok c'est compris
0
sylvesterseni Messages postés 17 Date d'inscription jeudi 18 septembre 2014 Statut Membre Dernière intervention 1 juin 2017
18 nov. 2014 à 20:58
maintenant c est une erreur qui se signale
"
Erreur : SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'precision,motivation,monsieur,name,prenom,Adresse,ville,Commune, cellulaire,tel' at line 1 "
0
sylvesterseni Messages postés 17 Date d'inscription jeudi 18 septembre 2014 Statut Membre Dernière intervention 1 juin 2017
18 nov. 2014 à 21:02

<?php
try
{
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd= new PDO('mysql:host=localhost;dbname=adhesion', 'root', '' , $pdo_options);
$req=$bdd ->prepare('INSERT INTO membre(ami,nom,info,precision,motivation,monsieur,name,prenom,Adresse,ville,Commune,
cellulaire,telephone,email,date_naissance,profession,cheque) VALUES (:ami,:nom,:info,:precision,:motivation,:monsieur,:name
,:prenom,:Adresse,:ville,:Commune,:cellulaire,:telephone,:email,:date_naissance,:profession,:cheque)');
$req ->execute(array(
'ami'=>$_POST['ami'],
'nom'=>$_POST['nom'],
'info'=>$_POST['info'],
'precision'=>$_POST['precision'],
'motivation'=>$_POST['motivation'],
'monsieur'=>$_POST['monsieur'],
'name'=>$_POST['name'],
'prenom'=>$_POST['prenom'],
'Adresse'=>$_POST['Adresse'],
'ville'=>$_POST['ville'],
'Commune'=>$_POST['Commune'],
'cellulaire'=>$_POST['cellulaire'],
'telephone'=>$_POST['telephone'],
'email'=>$_POST['email'],
'date_naissance'=>$_POST['date_naissance'],
'profession'=>$_POST['profession'],
'cheque'=>$_POST['cheque']));
echo'Inscription effectuée avec succes Bienvenue ! ';
}

catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
?>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
'Precision' ne lui plaît pas, ça fait partie des mots réservés de mysql :
http://dev.mysql.com/doc/refman/5.0/en/reserved-words.html

Deux solutions : changer le nom du champ, ou l'entourer d'accents graves (Alt Gr 7) :
...nom,info,`precision`,motivation,...
0
sylvesterseni Messages postés 17 Date d'inscription jeudi 18 septembre 2014 Statut Membre Dernière intervention 1 juin 2017
18 nov. 2014 à 21:09
ah je ne le savais pas merci beaucoup
0
Utilisateur anonyme
18 nov. 2014 à 21:17
De rien
0
sylvesterseni Messages postés 17 Date d'inscription jeudi 18 septembre 2014 Statut Membre Dernière intervention 1 juin 2017
18 nov. 2014 à 21:23
merci beaucoup pour ton aide ça marche !!!
0