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 :

Petite Erreur de syntaxe SQL difficilement décelable


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations forums :
    Inscription : Avril 2010
    Messages : 29
    Par défaut Petite Erreur de syntaxe SQL difficilement décelable
    Bonsoir,

    Je viens vers vous car je n'arrive pas à trouver ce petit bug bien gênant :

    Sur un forum phpBB 3.0.9, j'ai installé un Mod, une shoutbox (breizh shoutbox 1.4.0).
    La shoutbox fonctionne très bien, sauf que pour les visiteurs non-connectés il apparait une erreur SQL de syntaxe apparemment. Sauf qu'il n'y a pa l'air d'en avoir ...
    Une fois connecté, l'erreur disparait.

    J'ai vu ici et là que je ne suis pas le seul, seulement je n'ai pas trouver de réponse ... c'est bien dommage !

    erreur :
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') OR s.shout_forum = 0 ORDER BY s.shout_id DESC LIMIT 20' at line 4

    Mais que se passe-t-il ?

    Je pense que certains ont trouvé ... Merci de m'aider !

    voici le code php de la requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $sql = 'SELECT s.*, u.user_id, u.user_colour, u.username, 
    u.user_avatar, u.user_avatar_type, u.user_avatar_width, 
    u.user_avatar_height
    FROM ' .$_table. ' AS s
    LEFT JOIN ' . USERS_TABLE . " AS u ON s.shout_user_id = u.user_id
    WHERE " .$db->sql_in_set('s.shout_forum', array_keys($auth->acl_getf('f_read', true))). " OR s.shout_forum = 0
    ORDER BY s.shout_id DESC";

    Je ne sais pas comment récupérer la requête entière ... en SQL débug ? avec mysqld ? mais je ne suis pas en local et n'ai pas la main sur les équipements, à part en phpMyadmnin ...

    Il y a un moyen ?

    Merci d'avance pour votre aide !

    version MySQL 5.1.51
    PHP Version 5.2.13
    Server API Apache

    ugo

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 134
    Par défaut
    Ne maitrisant pas PHP je peux difficilement t'aider mais... qu'est censée retourner l'expression $db->sql_in_set('s.shout_forum', array_keys($auth->acl_getf('f_read', true))) ?
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 814
    Billets dans le blog
    14
    Par défaut
    Fais un echo de la requête et tu verras sûrement l'erreur probablement due au sql_in_set
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations forums :
    Inscription : Avril 2010
    Messages : 29
    Par défaut
    Bonjour,

    merci 1000 fois de prendre le temps de me répondre !

    al1_24, je ne sais pas ce qu'est sensé retourner l'expression, ce n'est pas de moi.

    CinePhil, j'ai essayé en écrivant echo $sql mais rien n'apparait ... ça parait logique puisqu'elle plante, non ?

    est-ce qu'il existe coté serveur un log d'erreur ou avec mysqld, mais il faut des autorisations ...

    je suis perdu !

    ugo

  5. #5
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 814
    Billets dans le blog
    14
    Par défaut
    Tu as bien mis ton echo $sql juste après la requête dans ton programme et tu as exécuté le programme ?

    Si ce programme est à l'intérieur d'une fonction plus complexe, ajoute un exit après le echo $sql.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations forums :
    Inscription : Avril 2010
    Messages : 29
    Par défaut $sql
    Bonsoir,

    Juste après la requête, ça signifie bien après la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ORDER BY s.shout_id DESC";
    echo $sql;
    ???

    Et j'ai tenté avec l'exit :

    Rien ne s'affiche non plus !

    Mystère (enfin pour moi)

    ugo

Discussions similaires

  1. Erreur de syntaxe SQL
    Par Ismaël(l) dans le forum Langage SQL
    Réponses: 2
    Dernier message: 10/05/2007, 09h19
  2. [MySQL] Jointure : erreur de syntaxe SQL
    Par kawther dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 26/03/2007, 17h25
  3. erreur de syntaxe sql dans vba
    Par @rkane dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 12/12/2006, 18h23
  4. erreur de syntaxe SQL
    Par michka999 dans le forum Requêtes
    Réponses: 9
    Dernier message: 29/08/2006, 16h52
  5. [SQL] Erreur de syntaxe SQL
    Par gregius dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 08/08/2006, 19h10

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