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 php sur contenu de la clause where d’une requête mysql


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2018
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 77
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2018
    Messages : 44
    Par défaut Erreur php sur contenu de la clause where d’une requête mysql
    Bonjour
    Contexte*:
    Je gère le site de ma chorale. Ce site est bâti avec des frames.
    En local, je suis en PHP 5.2.0 et mysql 5.0.22
    Chez l'hébergeur (pages perso de Free) c'est PHP 5.1.3RC4-dev et mysql 5.0.77
    Mon problème :
    Un script php lance l’édition d’étiquettes-adresse et je suis bloqué par une erreur que php identifie dans la clause where de la requête mysql qui extraie les données requises.
    La requête est la suivante*:
    $query ="SELECT `dest_civilite`, `dest_prenom`, `dest_nom`, `dest_aLattention`, `dest_titre`, dest_etablissement`, `dest_adresse1`, `dest_adresse2`, `dest_bp`, `dest_code_postal`, dest_ville`, `dest_pays`, IF(`dest_etablissement`='', CONCAT (`dest_nom`, " ", `dest_prenom`), `dest_etablissement`) AS nom_mixte FROM fab_destinataires_voeux WHERE dest_traiter='Oui' AND dest_donateur='Oui' ORDER BY nom_mixte";
    L’erreur retournée est*:
    Parse error: parse error, unexpected T_CONSTANT_ENCAPSED_STRING in C:\EasyPHP 2.0b1\www\EVI\gdc_EtiquettesDonateursAction.php on line 26
    La ligne 26 commence avec le mot WHERE.
    Je ne suis pas un expert, mais je ne vois vraiment pas ce qu’il y a d’incorrect dans cette clause.
    La ligne de code suivante est le lancement de la requête avec une classe que j’utilise depuis toujours, issue du livre de Philippe Rigaux, Pratique de PHP et Mysql (ma bible)*:
    $resultat = $bd→execRequete($query);
    Merci de bien vouloir m’aider.
    Cordialement

  2. #2
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 313
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 313
    Billets dans le blog
    17
    Par défaut
    Tu devrais simplifier l'écriture de ta requête, tu y verrais plus clair.
    Commence par supprimer les ` inutiles, c'est à dire tous dans ton cas.

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $sql = "
        SELECT ALL
            dest_civilite, dest_prenom, des_nom, dest_aLattention, dest_titre,
            dest_etablissement, dest_adresse1, dest_adresse2, dest_bp, dest_code_postal, dest_ville, dest_pays,
            IF(dest_etablissement = '', CONCAT(dest_nom, " ", dest_prenom), dest_etablissement) AS nom_mixte
        FROM fab_destinataires_voeux
        WHERE dest_traiter = 'Oui' AND dest_donateur = 'Oui'
        ORDER BY nom_mixte ASC
    ";

    On voit tout de suite que tu utilises des " dans le CONCAT() de ton SQL, or 1. en SQL on délimite une chaîne avec ' et concernant l'erreur 2. " est déjà utilisé pour délimiter ta chaîne PHP.


    Autre point : SQL dispose de l'opérateur CASE, tu peux l'utiliser à la place de la fonction propriétaire MySQL IF() => https://dev.mysql.com/doc/refman/5.6...#operator_case

  3. #3
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2018
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 77
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2018
    Messages : 44
    Par défaut rreur php sur contenu de la clause where d’une requête mysql
    Merci beaucoup Séb.
    Mon problème est réglé et j'ai donc pu produire le fichier pdf d'étiquettes-adresse.
    Je me suis fait avoir par la présence des guillemets dans le CONCAT. J'aurais dû le trouver.
    Encore merci.
    Cordialement.


    Citation Envoyé par Séb. Voir le message
    Tu devrais simplifier l'écriture de ta requête, tu y verrais plus clair.
    Commence par supprimer les ` inutiles, c'est à dire tous dans ton cas.


    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $sql = "
        SELECT ALL
            dest_civilite, dest_prenom, des_nom, dest_aLattention, dest_titre,
            dest_etablissement, dest_adresse1, dest_adresse2, dest_bp, dest_code_postal, dest_ville, dest_pays,
            IF(dest_etablissement = '', CONCAT(dest_nom, " ", dest_prenom), dest_etablissement) AS nom_mixte
        FROM fab_destinataires_voeux
        WHERE dest_traiter = 'Oui' AND dest_donateur = 'Oui'
        ORDER BY nom_mixte ASC
    ";

    On voit tout de suite que tu utilises des " dans le CONCAT() de ton SQL, or 1. en SQL on délimite une chaîne avec ' et concernant l'erreur 2. " est déjà utilisé pour délimiter ta chaîne PHP.


    Autre point : SQL dispose de l'opérateur CASE, tu peux l'utiliser à la place de la fonction propriétaire MySQL IF() => https://dev.mysql.com/doc/refman/5.6...#operator_case

Discussions similaires

  1. Erreur sur clause where
    Par enicnath dans le forum Macro
    Réponses: 3
    Dernier message: 27/08/2014, 15h34
  2. Réponses: 5
    Dernier message: 08/12/2012, 16h50
  3. Problème sur Dcount avec une clause where
    Par robyseb dans le forum VBA Access
    Réponses: 9
    Dernier message: 18/08/2011, 22h39
  4. Réponses: 15
    Dernier message: 26/11/2010, 21h38
  5. [MySQL] erreur php sur un formulaire de mis à jour
    Par carmen256 dans le forum PHP & Base de données
    Réponses: 34
    Dernier message: 06/04/2006, 13h39

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