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 dans 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 confirmé
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2010
    Messages : 86
    Par défaut Erreur de syntaxe dans une requête
    Bonjour à tous, je voiens faire appel a vous, car j'essaie d'effectuer un scritp en PhP/MySQL, script qui semblerais bien fonctionner, et qui me renvoi, lorsque je place un <?php echo $requete ?> :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Erreur SQL :
    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 'AND DIRIGEANT LIKE' at line 1
    Je ne sais plus trop quoi faire d'autant que c'est pour le boulot :/
    Âmes charitables ! qui pourrait me venir en aide ?

    Mon code :
    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
    <?php include('include/connection.php'); ?>
     
          <?php 
     
          $raison = $_GET['RAISON SOCIALE'];
          $dirige = $_GET['DIRIGEANT'];
          $comb   = $_GET['comb'];
     
     
          echo "<b> Raison sociale = $raison dirigeant = $dirige \n </b> <br/>";
     
     
          $requete = "SELECT * FROM `liste`"
                    ." WHERE `RAISON SOCIALE` LIKE $raison "
                   . "AND DIRIGEANT LIKE $dirige ";
     
     
          $connexion = mysql_pconnect (...,...,....);
          mysql_select_db (..., $connexion);
     
          $resultat = mysql_query ($requete, $connexion) or die("Erreur SQL : $query<br/>".mysql_error());
     
          while ( ($clients = mysql_fetch_object ($resultat)))
           echo "$raison ->raison sociale"
           ." dirigée par $dirige ->dirigeant </br>";
           ?>
           <?php echo $requete ?>

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Par défaut
    Bonjour,

    D'une part, pourquoi rouvrir les balises php (<?php et ?>) alors que tu les ouvres auparavent ?
    Ensuite pourquoi fais-tu ton après le parcours des données de la requête ?

    Je ferais plutôt la chose suivante :
    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
    <?php include('include/connection.php'); ?>
     
    	  <?php 
    	  
    	  $raison = $_GET['RAISON SOCIALE'];
          $dirige = $_GET['DIRIGEANT'];
    	  $comb   = $_GET['comb'];
    	  
    	  
    	  echo "<b> Raison sociale = $raison dirigeant = $dirige \n </b> <br/>";
    	  
    	
    	  $requete = "SELECT * FROM `liste`"
    	            ." WHERE `RAISON SOCIALE` LIKE $raison "
    	           . "AND DIRIGEANT LIKE $dirige ";
    	echo $requete;
    	  
    	  $connexion = mysql_pconnect (...,...,....);
    	  mysql_select_db (..., $connexion);
    	  
    	  $resultat = mysql_query ($requete, $connexion) OR die("Erreur SQL : $query<br/>".mysql_error());
    	  
    	  while ( ($clients = mysql_fetch_object ($resultat)))
    	   echo "$raison ->raison sociale"
    	   ." dirigée par $dirige ->dirigeant </br>";
    	   ?>
    C'est à dire déplacé le juste après ta requête.

    Est-ce mieux ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2010
    Messages : 86
    Par défaut
    Cela me retourne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Raison sociale = dirigeant =
    SELECT * FROM `liste` WHERE `RAISON SOCIALE` LIKE AND `DIRIGEANT` LIKE
    Erreur SQL :
    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 'AND `DIRIGEANT` LIKE' at line 1
    .. ? pourtant il me semble que la syntaxe est bonne.

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Par défaut
    Je pense que le problème vient du fait que la variable $raison ne nous renvoie rien.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $raison = $_GET['RAISON SOCIALE'];
    renvoit il une données ? (petit conseil, évite de mettre des espaces et accents ainsi que des majuscules dans les nom de tes champs.)

    Cordialement.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2010
    Messages : 86
    Par défaut
    Alors, je suis allé jusqu`àchanger les noms de mes tables :

    RAISON SOCIALE -> raison_sociale
    DIRIGEANT -> dirigeant

    Et le résultat est similaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Raison sociale = dirigeant =
    SELECT * FROM `liste` WHERE `raison_sociale` LIKE '' AND `dirigeant` LIKE ''

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Par défaut
    Lorsque tu fais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "Raison sociale : ".$raison;
    après
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $raison = $_GET['RAISON SOCIALE'];
    qu'obtiens tu ?

    Ensuite peux-tu s'il te plais montrer ton code PHP et HTML (du moins les parties qui nous interresse) ?

  7. #7
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    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 817
    Billets dans le blog
    14
    Par défaut
    Il faut mettre des apostrophes autour des variables PHP dans la requête car ce sont des valeurs texte.

    Au passage :
    1) Évite la guerre des étoiles !
    2) Supprime les apostrophes inversées autour des noms de table et/ou de colonnes quand elles ne sont pas nécessaires et elles ne devraient jamais l'être avec un bon nommage ! La colonne `RAISON SOCIALE` devrait s'appeler RAISON_SOCIALE !
    3) LIKE sans caractère générique % est équivalent à =

    Voici ta requête récrite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $requete = "
        SELECT les_colonnes_necessaires_et_pas_etoile
        FROM liste
        WHERE `RAISON SOCIALE` = '$raison'
            AND DIRIGEANT = '$dirige' 
    ";
    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 !

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

Discussions similaires

  1. Erreur de syntaxe dans une requête
    Par dark_geek dans le forum ASP
    Réponses: 10
    Dernier message: 28/05/2009, 18h15
  2. Erreur de syntaxe dans une requête
    Par Equinoxe5 dans le forum Requêtes
    Réponses: 3
    Dernier message: 29/04/2009, 13h09
  3. Réponses: 8
    Dernier message: 09/09/2008, 09h28
  4. Erreur de syntaxe dans une requête SQL
    Par Gabout dans le forum Requêtes et SQL.
    Réponses: 11
    Dernier message: 08/01/2008, 17h19
  5. Erreur de syntaxe dans une requête SQL
    Par amnesias dans le forum Langage SQL
    Réponses: 2
    Dernier message: 23/01/2007, 12h50

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