IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

insertion d'infos dans une BD mysql


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Février 2013
    Messages : 3
    Points : 6
    Points
    6
    Par défaut insertion d'infos dans une BD mysql
    salut j'ai un serieux problème pour enregistrer des infos dans ma bd
    voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    try
    {
    	$sql = 'INSERT INTO compte_bicf(id_clt,nom_clt,pre_clt,tel_clt,email_clt,site_clt,com_clt,quart_clt,sect_clt,adrg_clt,adrpost_clt,type_clt,nbree_clt,dom_act_clt,cert_clt,pseudo_clt,pwd_clt,img_clt,pays_clt,date_incri_clt) 
    		VALUES (:id, :nom, :prenom, :tel, :email, :site, :commune, :quartier, :secteur, :adr_geo, :adr_post, :type, :nbr_empl, :dom_act, :cert, :pseudo, :password, :img, :pays, $date)';
    	$rqt = $cn -> prepare($sql);
     
    	echo ''.$date;
    	$rqt -> bindValue('id_clt', $id, PDO::PARAM_STR);
    	$rqt -> bindValue('nom_clt', $nom, PDO::PARAM_STR);
    	$rqt -> bindValue('pre_clt', $prenom, PDO::PARAM_STR);
    	$rqt -> bindValue('tel_clt', $tel, PDO::PARAM_STR);		
    	$rqt -> bindValue('email_clt', $email, PDO::PARAM_STR);
    	$rqt -> bindValue('site_clt', $site, PDO::PARAM_STR);
    	$rqt -> bindValue('com_clt', $commune, PDO::PARAM_STR);		
    	$rqt -> bindValue('quart_clt', $quartier, PDO::PARAM_STR);
    	$rqt -> bindValue('sect_clt', $secteur, PDO::PARAM_STR);		
    	$rqt -> bindValue('adrg_clt', $adr_geo, PDO::PARAM_STR);
    	$rqt -> bindValue('adrpost_clt', $adr_post, PDO::PARAM_STR);
    	$rqt -> bindValue('type_clt', $type, PDO::PARAM_STR);		
    	$rqt -> bindValue('nbree_clt', $nbr_empl, PDO::PARAM_STR);
    	$rqt -> bindValue('dom_act_clt', $dom_act, PDO::PARAM_STR);
    	$rqt -> bindValue('cert_clt', $cert, PDO::PARAM_STR);		
    	$rqt -> bindValue('pseudo_clt', $pseudo, PDO::PARAM_STR);
    	$rqt -> bindValue('pwd_clt', $password, PDO::PARAM_STR);
    	$rqt -> bindValue('img_clt,', $img, PDO::PARAM_STR);		
    	$rqt -> bindValue('pays_clt', $pays, PDO::PARAM_STR);
    	$rqt -> bindValue('date_incri_clt', $date, PDO::PARAM_STR);
     
    	$rqt -> execute();
    }
    catch(Exception $e)
    {
    	die('Erreur : '.$e->getMessage());
    }
    et voici le message qu'il affiche :
    Erreur : SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens

  2. #2
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    tu devrais relire la doc sur PDO parce que tu as inversé les colonnes avec les tokens :
    Dans ton sql : 
    colonnes : id_clt , nom_clt
    token    :  :id   ,   :nom
    
    et toi tu lies des valeurs aux colonnes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $rqt -> bindValue('id_clt', $id, PDO::PARAM_STR);
    $rqt -> bindValue('nom_clt', $nom, PDO::PARAM_STR);
    alors que cela devrait être
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $rqt -> bindValue(':id', $id, PDO::PARAM_STR);
    $rqt -> bindValue(':nom', $nom, PDO::PARAM_STR);

  3. #3
    Membre averti

    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 205
    Points : 409
    Points
    409
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Invalid parameter number: number of bound variables does not match number of tokens
    Signifie que tu ne bind pas autant de variables qu'il y a de token. Tu as 19 variables, et tu en bind 20...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    :id, :nom, :prenom, :tel, :email, :site, :commune, :quartier, :secteur, :adr_geo, :adr_post, :type, :nbr_empl, :dom_act, :cert, :pseudo, :password, :img, :pays, $date
    Le dernier, $date devrait être :date_incri_clt

  4. #4
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Points : 1 220
    Points
    1 220
    Par défaut
    bonjour,

    à la place d'une chaîne de caractère(PARAM_STR) il te faut un nombre.
    Ainsi je présume que id_clt dans la bd est un Int auquel cas le champ attendu doit être un Int(PARAM_INT) par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    		$rqt -> bindValue(':id_clt', $id, PDO::PARAM_INT);
    aussi chacun des paramètres bindés doit être précédés par : par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    		$rqt -> bindValue(':pre_clt', $prenom, PDO::PARAM_STR);

Discussions similaires

  1. Problème d'insertion de lignes dans une table MySql
    Par developppez dans le forum Windows Forms
    Réponses: 14
    Dernier message: 02/01/2009, 17h58
  2. Insertion de donnée dans une base MySql
    Par jep33 dans le forum Langage
    Réponses: 4
    Dernier message: 05/11/2008, 07h44
  3. [MySQL] Récupération infos dans une base MySQL/PHP
    Par Meewix dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 22/02/2008, 20h13
  4. Insertion de texte dans une base mysql
    Par Greggggggg dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 28/07/2006, 22h16
  5. Réponses: 11
    Dernier message: 01/06/2005, 15h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo