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 :

Erreur de syntaxe lors de concaténation de chaine


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif Avatar de Aizen64
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    563
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 563
    Par défaut Erreur de syntaxe lors de concaténation de chaine
    Bonsoir,

    Étrangement, j'ai une erreur de syntaxe lors de l'excécution d'un pg_query :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $sql = "SELECT COUNT(*) FROM ".$this->table." WHERE ".$this->champlogin." = '".$login."' AND ".$this->champassword." = ".$password."";
    Par contre la requête suivante fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $sql = "SELECT COUNT(*) FROM ma_table WHERE champ_login = '".$login."' AND champ_password = '".password."'";
    L'erreur se situe entre le FROM ma_table et le WHERE si je me base sur le code couleur de mon éditeur de texte.

    Clarification :
    - tous les champs et nom de tables sont en minuscules,
    - les champs texte dans la requête sont entre simple quote conformément à ce que PG demande,
    - les variables auxquelles font références les $this sont toutes en double quote.

    J'ai bien essayé de faire des switch entre simple et double quote sans résultat et j'ai bien du mal à comprendre l'erreur.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    1/ echo $sql; ?

    2/ Message d'erreur ?

  3. #3
    Membre Expert

    Homme Profil pro
    développeur
    Inscrit en
    Octobre 2013
    Messages
    1 583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : développeur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 583
    Par défaut
    Bonsoir, si tu pouvais donner l'erreur cela serait plus simple ici je pense que c'est un problème de guillemets.

  4. #4
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    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
    Billets dans le blog
    12
    Par défaut
    Salut

    dans la 1ère requête tu as oublié d'encadrer le mot de passe de guillemets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->champassword." = ".$password."";
    essaie avec ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->champassword." = '".$password."'";
    Tout le reste est correct

  5. #5
    Membre très actif Avatar de Aizen64
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    563
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 563
    Par défaut
    Je n'ai plus le log à portée de clic. De mémoire, la requête est correctement formatée jusqu'a la définition de la première valeur. Le log d'erreur PHP montrait pour le champ login des double quote, ce qui correspond à une erreur de syntaxe pour une chaine avec PostgreSQL.

    A vérifier. Update à venir au plus tard lundi.

    Merci pour les réponses.

  6. #6
    Membre très actif Avatar de Aizen64
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    563
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 563
    Par défaut
    Je viens d'effectuer le test en entourant ce que j'ai dans le WHERE par des simple quotes. Même message d'erreur.

    Le message d'erreur :

    WHERE champ_login = ''mavaleur...

    Evidement, PostgreSQL refuse de le traiter correctement, les string ne doivent pas être entourées de double guillemets.

    La logique de mon code :
    - récupération des données en POST, le login et mot de passe,
    - Initialisation de la classe d'authentification avec le nom de la table, du champ login, et celui de mot de passe fourni au constructeur, l'ensemble de ces string sont en simple quote,
    - la méthode de login de la classe d'autentification est appelée, avec pg_connect, l'ensemble de la requête SQL est entre double quote, les valeurs passées en paramètres sont entourés de simple quote dans la requête,
    - utilisation de pg_escape_string, qu'elle soit utilisée ou non ne change rien au message d'erreur.

    C'est comme si la requête était interprétée avec les simple quote fournis dans ma requête auquel on ajoute une simple quote des valeurs que je passe en paramètre.

    Je sèche.

Discussions similaires

  1. Erreur invalid syntax lors d'un print
    Par yvkoe dans le forum Général Python
    Réponses: 3
    Dernier message: 10/08/2009, 11h59
  2. Erreur de syntaxe lors d'un INSERT INTO
    Par amerex dans le forum Requêtes et SQL.
    Réponses: 14
    Dernier message: 29/09/2008, 23h23
  3. [MySQL] Erreur de syntaxe lors de l'import de fichier .sql
    Par dadoo91 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 29/05/2008, 07h47
  4. Erreur de syntaxe lors de la construction d'un lien
    Par sosophie dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 04/06/2007, 17h02
  5. [PEAR][Services_Google] Erreur de syntaxe lors de son utilisation
    Par blueice dans le forum Bibliothèques et frameworks
    Réponses: 8
    Dernier message: 17/05/2006, 11h13

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