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

Langage PHP Discussion :

Syntaxe de concaténation dans un LIKE avec variable


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Octobre 2008
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 329
    Par défaut Syntaxe de concaténation dans un LIKE avec variable
    Bonjour,

    Je développe un formulaire de recherche multi-critères. Pour cela je concatène une variable $argument, suivant les critères de recherche choisis par l'utilisateur, que je concatène en final à un SELECT. Pour l'instant tous les critères de recherche fonctionnent (pays, age, etc..), mais j'ai un souci pour les régions.

    Je cherche une "id_region" qui contient la variable "$id_region" dans son nom, avec éventuellement d'autres caractères avant ou après. "id_region" est de type VARCHAR, "$id_region" est un caractère (a, ou b, ou c,etc).

    J'ai donc fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $argument .= ' AND id_region LIKE %'.$id_region.'%';
    Mais ça me génère une erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Erreur MySQL : 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 '%a%'
    Pour ce message d'erreur j'avais choisi comme critère de recherche les "id_region" qui ont un "a" dans leur nom.

    J'ai fait un echo de mon SELECT final :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT id_membre FROM identification WHERE actif = 1 AND id_pays = 2 AND id_region LIKE %a%
    Dans ce cas précis je cherche à sélectionner les membres actifs dont les "id_region" contiennent le caractère 'a'. id_pays = 2 correspond à la France.

    Apparemment il y a un problème de syntaxe, mais je ne vois pas ou.

    Merci de votre aide.

  2. #2
    Membre émérite
    Avatar de amoiraud
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2006
    Messages : 606
    Par défaut
    il faut mettre un ' avant et aprés les % :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $argument .= ' AND id_region LIKE \'%'.$id_region.'%\'';

  3. #3
    Membre Expert
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 501
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 501
    Par défaut
    salut, je crois que tu as oublie des quotes simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT [blabla] LIKE '%'.$id_region.'%';
    edit : ah zut, on a poste en meme temps :/
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

  4. #4
    Membre éclairé
    Inscrit en
    Octobre 2008
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 329
    Par défaut Rajouter les quotes simples
    Ca marche avec cette solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $argument .= ' AND id_region LIKE \'%'.$id_region.'%\'';
    Merciiiiiiii !!!!!!! Ca fait 72 heures que je galèrais là dessus !

  5. #5
    Membre Expert
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 501
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 501
    Par défaut
    ma fault, je n'avais pas vu que tu etais deja entre quote simple
    comme l'a fais amoiraud, il faut echape les quotes \'
    si tu l'as fais, $id_region contient-il bien ce que tu recherche ?
    affiche la requete generee, et execute la directement sur mysql pour plus de precisions (vis a vis de ton erreur)
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

  6. #6
    Membre éclairé
    Inscrit en
    Octobre 2008
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 329
    Par défaut La solution
    Je remets la ligne pour être sûr ! Tout fonctionne maintenant parfaitement !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $argument .= ' AND id_region LIKE \'%'.$id_region.'%\'';
    Merci encore !

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

Discussions similaires

  1. syntaxe like avec variable
    Par xirom dans le forum Requêtes
    Réponses: 3
    Dernier message: 23/09/2008, 22h56
  2. [1.x] Syntaxe d'une requete sql like avec variable
    Par Ryo_Saeba dans le forum Symfony
    Réponses: 2
    Dernier message: 15/04/2008, 15h32
  3. Signe % dans un LIKE avec une colonne SQL
    Par pmithrandir dans le forum Requêtes
    Réponses: 7
    Dernier message: 07/04/2008, 10h13
  4. clause like avec variable
    Par youp_db dans le forum SQL
    Réponses: 6
    Dernier message: 11/06/2007, 09h40
  5. [tuning] like avec variable
    Par batin dans le forum Oracle
    Réponses: 21
    Dernier message: 21/03/2006, 16h12

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