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 :

Sous requêtes - Erreur de syntaxe [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
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Mars 2009
    Messages : 31
    Par défaut Sous requêtes - Erreur de syntaxe
    Je n'arrive pas à comprendre pourquoi ma sous-requête ne fonctionne pas.

    Je voudrais récupérer la liste de tous les clients étant dans la même ville que le client sélectionné.

    Le client sélectionné est dans l'url (detail.php?clientID=2025)

    Mon premier jeu d'enregistrement fonctionne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     SELECT villeID
    FROM tbl_clients
    WHERE clientID = colname

    ici, colname va chercher le n° client dans l'URL. Donc cette première requête me renvoi un chiffre qui correspond à l'id de la ville.

    Cette première requête fonctionnant, j'ai donc rédigé la requête suivante pensant pouvoir récupérer les autres clients de la ville

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT * 
    FROM tbl_clients
    WHERE villelID = (SELECT villeID FROM tbl_clients WHERE clientID = colname)

    Dreamweawer me renvoi un message d'erreur m'indiquant que ma syntaxe SQL n'est pas correcte.

    Si vous avez un avis sur la question , je suis preneur;

    Merci d'avance

  2. #2
    Membre émérite Avatar de obito
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 773
    Par défaut
    Bonsoir !

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT *
    FROM tbl_clients
    WHERE villelID IN (SELECT villeID FROM tbl_clients WHERE clientlID = colname)

    Car ta requête te retourne plusieurs résultats

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Mars 2009
    Messages : 31
    Par défaut
    ça ne mache pas non plus !

    MySQL Error Error#:1064. C'est à dire le même message que lorsque j'utilise le = à la place de IN


    Pourtant la requête n'a rien d'extraordianaire ! Je ne comprends pas ce qui cloche . Est-ce que Dreamweaver souhaite une mise en forme particulière ?

  4. #4
    Membre émérite Avatar de obito
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 773
    Par défaut
    Cette erreur n'a pas de sens^^ un peu de code? TU as un truc du genre ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $exec=mysql_query($req) or die(mysql_error());

  5. #5
    Invité
    Invité(e)
    Par défaut
    Et avec int(colname) ?
    ou $colname ?

    A vrai dire, on ne sait pas trop ce qu'est colname ! (numerique ou chaine ?)

    Que dit un echo colname; ?

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Mars 2009
    Messages : 31
    Par défaut
    Voici quelques précisions

    La requete qui marche :
    SELECT villeID
    FROM tbl_clients
    WHERE clientID = colname

    VARIABLE
    Nom = Colname
    Type=Integer
    Valeur par défaut = -1
    Valeur d'exécution : $_GET["clientID"]

    Cette requête permet de récupérer l'id de la ville de l'enregistrement.
    Le jeu d'enregistrement est filtré par l'id du client qui se trouve dans l'url.

    Si je teste cette requête silmple, elle fonctionne et me donne un chiffre ( cohérent par rapport à ma base).

    Voici maintenant le code entier disponible dans la page (pour la requête simple qui fonctionne) :

    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
    <?php require_once('Connections/zzzzz'); ?>
    <?php
    if (!function_exists("GetSQLValueString")) {
    function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
    {
      if (PHP_VERSION < 6) {
        $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
      }
     
      $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
     
      switch ($theType) {
        case "text":
          $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
          break;    
        case "long":
        case "int":
          $theValue = ($theValue != "") ? intval($theValue) : "NULL";
          break;
        case "double":
          $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
          break;
        case "date":
          $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
          break;
        case "defined":
          $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
          break;
      }
      return $theValue;
    }
    }
     
    $colname_TEST = "-1";
    if (isset($_GET['clientID'])) {
      $colname_TEST = $_GET['clientID'];
    }
    mysql_select_db($database_zzz, $zzzz);
    $query_TEST = sprintf("SELECT villeID FROM tbl_clients WHERE clientID = %s", GetSQLValueString($colname_TEST, "int"));
    $TEST = mysql_query($query_TEST, $zzz) or die(mysql_error());
    $row_TEST = mysql_fetch_assoc($TEST);
    $totalRows_TEST = mysql_num_rows($TEST);
    ?>

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

Discussions similaires

  1. Requête: Erreur de syntaxe
    Par I.Z.M.M dans le forum ASP.NET
    Réponses: 3
    Dernier message: 13/01/2009, 19h09
  2. Réponses: 3
    Dernier message: 22/12/2007, 14h06
  3. Erreur syntaxe SQL DELETE avec sous requête
    Par jeanbenoit1987 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 07/12/2007, 12h14
  4. Plusieurs lignes pour une sous-requête (erreur #1242)
    Par Sieldev dans le forum Langage SQL
    Réponses: 3
    Dernier message: 23/08/2007, 01h21
  5. Agrégats et sous-requêtes "Erreur de syntaxe"
    Par Finidrigoler dans le forum Access
    Réponses: 3
    Dernier message: 08/12/2006, 17h39

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