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 :

Requete SQL invalide


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 306
    Par défaut Requete SQL invalide
    Bonjour,

    Le code ci-dessous ne créer pas l'enregistrement dans la base de données; j'ai volontairement mis la syntaxe pdo avec des ':' et la standard avec les variables traditionnelles :

    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
    	//Récupération des informations saisies
    	$nom = $_POST['nom'];
    	$prenom = $_POST['prenom'];
    	$adresse = $_POST['adresse'];
    	$batetage = $_POST['batetage'];
    	$code_postal = $_POST['code_postal'];
    	$ville = $_POST['ville'];
    	$pays = $_POST['pays'];
    	$email = $_POST['email'];
    	$offres_commerciales = $_POST['offres_commerciales'];
    	$offres_partenaires = $_POST['offres_partenaires'];
    	$login = $_POST['login'];
    	$question_secrete = $_POST['question_secrete'];
    	$reponse_secrete = $_POST['reponse_secrete'];
     
    	//Génération du mot de passe
    	$pass = rand(10000,99999); //MDP en clair
    	$password = sha1($pass); //MDP Crypté
    	//Fin génération du mot de passe
     
    	//Récupération de l'adresse IP
    	$ip_inscription = $_SERVER['REMOTE_ADDR'];
     
    	//Daate et heure sous forme de timestamp
    	$date_inscription = time();
     
     
    	//Requete SQL & traitements PDO
    	$sql = "INSERT INTO client (nom, prenom, adresse, batetage, code_postal, ville, pays, email, offres_commerciales, offres_partenaires, login, password, question_secrete, reponse_secrete, ip_inscription, date_inscription) VALUES (:nom, '$prenom', '$adresse', '$batetage', '$code_postal', '$ville', '$pays', '$email', '$offres_commerciales', '$offres_partenaires', '$login', '$password', '$question_secrete', '$reponse_secrete', '$ip_inscription', '$date_inscription')";
    	$stmt = $dbh->prepare($sql);
     
    	$stmt->BindParam(':nom', $nom);
    	$stmt->BindParam(':prenom', $prenom);
    	$stmt->BindParam(':adresse', $adresse);
    	$stmt->BindParam(':batetage', $batetage);
    	$stmt->BindParam(':code_postal', $code_postal);
    	$stmt->BindParam(':ville', $ville);
    	$stmt->BindParam(':pays', $pays);
    	$stmt->BindParam(':email', $email);
    	$stmt->BindParam(':offres_commerciales', $offres_commerciales);
    	$stmt->BindParam(':offres_partenaires', $offres_partenaires);
    	$stmt->BindParam(':login', $login);
    	$stmt->BindParam(':question_secrete', $question_secrete);
    	$stmt->BindParam(':reponse_secrete', $reponse_secrete);
    	$stmt->BindParam(':password', $password);
    	$stmt->BindParam(':ip_inscription', $ip_inscription);
    	$stmt->BindParam(':date_inscription', $date_inscription);
     
    	$stmt->execute(); //Execution de la requête
    La requête créee par le code ci-dessus est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO client (nom, prenom, adresse, batetage, code_postal, ville, pays, email, offres_commerciales, offres_partenaires, login, password, question_secrete, reponse_secrete, ip_inscription, date_inscription) VALUES (:nom, 'iiii', 'i', 'oi', '', 'oio', 'io', 'o', '', '', '', '8fe455256bed73443dfd02fdfc42bac42b50602b', '', '', '127.0.0.1', '1236018562')
    La ou il y a les variables dans la reuqte tout se passe bien en revanche :nom n'est pas transformé et cela est pareil si je remplace les autres variables par la syntaxe ':'.

    L'erreur renvoyée par SQL est : SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens

    Merci d'avance pour votre aide

    Quelle est l'erreur ?

  2. #2
    Membre Expert
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Thaïlande

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 564
    Par défaut
    Et si tu remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $stmt->BindParam(':nom', $nom);
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $stmt->BindParam(':nom', $nom, PDO::PARAM_STR);

  3. #3
    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
    Par défaut
    :nom n'est pas transformé
    qu'est ce que tu veux dire par la ?

    Est-ce que tu ne pourrais pas nous montrer ton vrai code actuel parce que la on n'a qu'un mélange des deux méthodes.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

Discussions similaires

  1. Requete Sql Invalide
    Par youssefcss dans le forum Accès aux données
    Réponses: 4
    Dernier message: 08/05/2014, 11h56
  2. DateTimePicker requete SQL message d'erreur-> invalide token
    Par fifi_dz dans le forum Bases de données
    Réponses: 2
    Dernier message: 02/05/2011, 12h52
  3. [PDO] Requete SQL Invalide
    Par popy67 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 19/06/2009, 18h43
  4. requete SQL invalide
    Par L4BiN dans le forum Langage SQL
    Réponses: 7
    Dernier message: 05/11/2007, 15h35
  5. Resultat requete SQL
    Par PierDIDI dans le forum Bases de données
    Réponses: 2
    Dernier message: 23/07/2002, 13h43

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