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

Requêtes MySQL Discussion :

Select contenant une variable


Sujet :

Requêtes MySQL

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 168
    Par défaut Select contenant une variable
    Bonjour,
    J'utilise à plusieurs reprises une requête de la forme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysqli_query($db,"select * FROM `xxxx` where `user_country`='".$Code."'" );
    $Code étant défini lors d'un query précédent ($Code = $result['user_country']), ça fonctionne très bien.
    Par contre ceci ne fonctionne pas, il me donne toutes les entrées de la table sans tenir compte du where
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysqli_query($db,"select * FROM `xxxx` where 'user_posts' > '".$PostMin."'")
    La variable provient aussi d'un query précédent $PostMin=$Rank['rank_min']
    Où est mon erreur ?
    Merci

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 718
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 718
    Billets dans le blog
    10
    Par défaut
    bonsoir,

    quel est le type de la colonne user_posts et quel est le contenu de la host variable $PostMin ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 168
    Par défaut
    Merci pour ta réponse rapide
    user_posts est du type mediumint(8)
    $PostMin contient un nombre
    echo "<br>".$Num." Id : ".$Rank['rank_id']." Min : ".$PostMin;
    410 Id : 10 Min : 1000
    410 Id : 9 Min : 500
    410 Id : 8 Min : 200
    410 Id : 7 Min : 100
    410 Id : 6 Min : 50
    410 Id : 5 Min : 20
    410 Id : 4 Min : 10
    410 Id : 3 Min : 1
    410 Id : 2 Min : 0
    410 Id : 1 Min : 0
    $Num donne toujours 410 càd le nombre d'entrées de la table sans tenir compte de $PostMin
    alors que dans phpMyAdmin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select `user_posts` FROM `phpbb_users` where `user_posts` >= 1000
    donne le nombre d'entrées correct.

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    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 138
    Par défaut
    Citation Envoyé par Herve_be Voir le message
    Par contre ceci ne fonctionne pas, il me donne toutes les entrées de la table sans tenir compte du where
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysqli_query($db,"select * FROM `xxxx` where 'user_posts' > '".$PostMin."'")
    C'est peut-être parce que la chaine 'user_posts' est toujours après la chaine "'".$PostMin."'" dans l'ordre alphabétique.

    Attention à ne pas confondre les apostrophes simples avec les apostrophes inversées... D'ailleurs, ces dernières devraient être employées uniquement pour encadrer des noms d'objets qui ne respectent pas la norme (seulement les caractères non accentuées de A à Z, les chiffres de 0 à 9 ou le tiret de soulignement _, pas de mots réservés du langage SQL).

    Si $PostMin est toujours une valeur numérique, il est inutile (voire contre-productif) de l'encadrer d'apostrophe.

    Il est par ailleurs vivement conseillé, pour éviter les risques d'attaque par injection SQL, de préférer les requêtes paramétrées à la construction de requêtes par concaténation de variables.
    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.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 168
    Par défaut
    Si je supprime les simples quotes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysqli_query($db,"select * FROM `phpbb_users` where 'user_posts' > ".$PostMin)
    ne donne aucun résultat.

  6. #6
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    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 138
    Par défaut
    Citation Envoyé par Herve_be Voir le message
    Si je supprime les simples quotes
    Elles n'ont pas toutes été supprimées...
    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.

  7. #7
    Membre très actif
    Profil pro
    Administrateur
    Inscrit en
    Mai 2008
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2008
    Messages : 237
    Par défaut
    'user_posts' est interprété comme une chaîne de caractères et non comme une colonne
    Mettre une requête dans une variable est pratique pour le débogage

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $sql = 'SELECT * FROM nom_table WHERE user_posts > ' . $PostMin;
    mysqli_query( $db, $sql );

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 168
    Par défaut
    OK, l'erreur est que j'ai utilisé ' au lieu de `
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysqli_query($db,"select * FROM `phpbb_users` where `user_posts` > ".$PostMin)
    C'est résolu, merci.

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

Discussions similaires

  1. [VBA-E] chemin d'acces contenant une variable
    Par surfeuse dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 09/06/2006, 11h07
  2. récupérer le résultat d'un SELECT dans une variable ?
    Par budhax dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 06/06/2006, 11h24
  3. Requête selection avec une variable de date
    Par kahmsin dans le forum Access
    Réponses: 7
    Dernier message: 20/11/2005, 20h38
  4. [Sybase] résultat d'un select dans une variable
    Par stoz dans le forum Sybase
    Réponses: 2
    Dernier message: 14/09/2004, 15h28
  5. [ADO] requete contenant une variable ?
    Par kam dans le forum MFC
    Réponses: 9
    Dernier message: 28/04/2004, 12h08

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