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

Langage PHP Discussion :

SQL INSERT bdd prepare : 2 Erreurs


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 169
    Points : 34
    Points
    34
    Par défaut SQL INSERT bdd prepare : 2 Erreurs
    Bonjour.

    Je bloque sur un insert.
    J'ai fouiller sur internet, j'ai relu mon code, j'ai fais des tests, mais je ne vois toujours pas mon erreur.

    en bdd il y a juste id en auto increment qui n'est pas listé ci-dessous

    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
    35
    36
    37
    38
    39
    40
    41
     
     
    $bdd = new PDO[...]
     
     
                        $req = "INSERT INTO users (
                          username, 
                          email, 
                          pass, 
                          verif_mail,
                          maj,
                          read_pass, 
                          afffich_mail,   
                          user_text,
                          email_temp
                        ) VALUES ( 
                          :username, 
                          :email, 
                          :pass, 
                          :verif_mail,
                          CURDATE(),
                          :read_pass, 
                          :afffich_mail,   
                          :user_text,
                          :email_temp                       
                        )";
     
                        $sql = $bdd->prepare($req);   
     
                        $sql->execute(array(
                                    ':username' => $username,
                                    ':email' => '',
                                    ':pass' => $pass_hache,
                                    ':verif_mail' => $verif_mail,
                                    ':maj'=> PDO::PARAM_STR,
                                    ':read_pass' => $read_pass,
                                    ':afffich_mail' => $affich_mail,
                                    ':user_text' => $user_text,
                                    ':email_temp' => $email
     
                        )) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error());
    Réponse serveur :
    Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in /web/chabaya/www/anceze/onelink/fonctions.php on line 313

    Catchable fatal error: Object of class PDOStatement could not be converted to string in /web/chabaya/www/anceze/onelink/fonctions.php on line 313
    313 étant :
    )) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error());

    Toute aide est le bienvenue
    Bonne journée

  2. #2
    Membre éclairé Avatar de Geoffrey74
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2007
    Messages
    515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Isère (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2007
    Messages : 515
    Points : 760
    Points
    760
    Par défaut
    Salut,

    tu as la réponse dans le message d'erreur :

    :username,
    :email,
    :pass,
    :verif_mail,
    CURDATE(),
    :read_pass,
    :afffich_mail,
    :user_text,
    :email_temp

    => 8 variables

    ':username' => $username,
    ':email' => '',
    ':pass' => $pass_hache,
    ':verif_mail' => $verif_mail,
    ':maj'=> PDO:ARAM_STR,
    ':read_pass' => $read_pass,
    ':afffich_mail' => $affich_mail,
    ':user_text' => $user_text,
    ':email_temp' => $email

    => tu lui en donne 9, le :maj est en trop

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 169
    Points : 34
    Points
    34
    Par défaut
    Je ne suis pas certain de comprendre vu que quoi que je tente c'est toujours pas bon.
    Puisque tu me dis que ca vient de curdate() je ne prend que cet paramètre dans mon exemple.

    PDO:ARAM_STR je ne connaissez pas (j'ai arrêté la prog pendant 10 ans).

    Si je comprend bien c'est pas adapté pour placer une date de type date en bdd ?
    Je veux juste placer en bdd la date du jour où j'insert une ligne.

    Je ne connaissez pas curdate non plus.
    Il semble que ca passe directement YYYY-MM-DD au format date de la bbb.

    Si je comprend bien, mes deux problème sont :

    1- PDO:ARAM_STR c'est pas pour une date
    2- curdate() je ne sais pas comment le passer dans executer

    Dois-je mettre quelque chose poru la date dans la préparation ?
    Que dois-je utiliser dans l'execution ?

    Merci pour l'aide.
    Bonne journée

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu n'as pas ':maj' dans la préparation (puisque tu utilises une fonction et pas un paramètre), donc tu ne dois pas l'avoir non plus dans l'execution.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 169
    Points : 34
    Points
    34
    Par défaut
    ok, je suis allé prendre un cours sur PDO et j'étais loin du compte.
    C'est sure 10 ans après ca fais long.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Insert bdd "SQL error: no such function: read"
    Par lenny32 dans le forum SQLite
    Réponses: 5
    Dernier message: 27/06/2009, 02h29
  2. [MySQL] Insertion dans la BDD inexistant, aucune erreur donnée
    Par Alcolyte dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 15/04/2008, 19h05
  3. [SQL] Insertion ds Bdd
    Par lynxxx dans le forum PHP & Base de données
    Réponses: 23
    Dernier message: 25/06/2007, 19h03
  4. Réponses: 4
    Dernier message: 13/04/2004, 19h12
  5. erreur SQL ...INSERT INTO
    Par naidinp dans le forum ASP
    Réponses: 20
    Dernier message: 18/09/2003, 11h38

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