Connection base de donnees

Résolu
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. '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. ah je ne le savais pas merci beaucoup
      0
    2. De rien
      0
    3. merci beaucoup pour ton aide ça marche !!!
      0

  2. <?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
    1. 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
      1. 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. ok c'est compris
          0
      2. 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. merci je revois et je vous fais signe
          0