Connection base de donnees

Résolu
sylvesterseni Messages postés 17 Statut Membre -  
sylvesterseni Messages postés 17 Statut Membre -
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

  1. Utilisateur anonyme
     
    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
    1. sylvesterseni Messages postés 17 Statut Membre
       
      merci je revois et je vous fais signe
      0
  2. Liightman Messages postés 54 Statut Membre 9
     
    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
    1. sylvesterseni Messages postés 17 Statut Membre
       
      ok c'est compris
      0
  3. sylvesterseni Messages postés 17 Statut Membre
     
    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
  4. sylvesterseni Messages postés 17 Statut Membre
     

    <?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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Utilisateur anonyme
     
    '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
    1. sylvesterseni Messages postés 17 Statut Membre
       
      ah je ne le savais pas merci beaucoup
      0
    2. Utilisateur anonyme
       
      De rien
      0
    3. sylvesterseni Messages postés 17 Statut Membre
       
      merci beaucoup pour ton aide ça marche !!!
      0