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 :

apostrophe et requête


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de carelha
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 168
    Par défaut apostrophe et requête
    Bonjour,

    j'ai un formulaire de recherche par mots clef et j'ai ajouté addslashes pour gérer les caractères spéciaux

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	$_SESSION['motsclef'] = addslashes($_POST['motsclef']) ;
    j'ai fait un écho de ma requête, pour vérifier que \ est bien ajouté, ce qui est le cas, puisque la requête, avec une recherche comme "d'alzheimer"' me donne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT count(*) FROM guide were public LIKE '%personne âgée%' AND  (s_nom LIKE '%d\'alzheimer%' OR specifique LIKE '%d\'alzheimer%')
    or, quand je cherche avec le mot alzheimer, j'ai bien des résultats, mais quand je cherche avec d'alzheimer, je n'ai aucun résultat, alors que j'ai en bdd des lignes avec "maladie d\'alzheimer" (l'antislashes est intégré dans le texte de la bdd)

    Je ne comprends pas du tout pourquoi j'ai 0 résultat, merci à ceux qui pourront m'aider.

  2. #2
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 931
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 931
    Par défaut
    Au lieu d'utiliser les simples quotes pour les chaînes de ta requête tu peux utiliser \" ce qui te donnera :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $sql = "SELECT count(*)
            FROM guide
            WHERE public LIKE \"%personne âgée%\"
            AND (s_nom LIKE \"%d'alzheimer%\"
                 OR specifique LIKE \"%d'alzheimer%\")";
    Et donc pas besoin d'addslashes et pas de problème de requête.

  3. #3
    Expert confirmé Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par défaut
    Il y a un problème : il ne devrait pas y avoir de slash superflu dans ta base !
    Une base de donnée devrait contenir exactement ce qu'à saisit l'utilisateur.
    Il s'aisit alors dans phpMyAdmin (ou autre) je devrais voir pas l\'arbre ni autre bizzarrerie.

    Que vaut le parametre magic_quotes_gpc dans ton phpinfo ?

  4. #4
    Membre confirmé Avatar de carelha
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 168
    Par défaut
    magic quote est sur on.

    pour les \ intégrés, je ne sais plus pourquoi j'en suis arrivée là, mais c'était réfléchi . j'ai utilisé mysql_real_escape_string avant toutes les données entrées via un formulaire par les utilisateurs, donc il y a des \.

    > bisounours je vais voir, merci

  5. #5
    Expert confirmé Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par défaut
    Soit tu passes ce flag à off, soit tu fais en sortes de travailler avec des chaines naturelles dans tes scripts. Du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    get_magic_quotes_gpc() ? stripslashes($variable_de_requete) : $variable_de_requete
    Ensuite comme d'hab, mysql_real_escape_string à l'enregistrement en bd...

  6. #6
    Membre confirmé Avatar de carelha
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 168
    Par défaut
    Merci de ta réponse, mais elle n'est pas claire pour moi
    soit je mets les magic quote à off

    soit je fais stripslashes($variable_de_requete) pour enlever le \ mis par le magic quote quand il est à on, c'est ca ?

    et ensuite je rajoute mysql_real_escape_string avant l'intégration en base de données ?

    Mais dans ce cas, j'aurais quand même des \ dans ma base de données non ?

    Merci de ton aide, ce point est vraiment très confus pour moi (comment ca, ca se voit !?)

    et je pensais que les \ en bdd était une sécurité nécessaire, on le voit dans un nombre de tutorial très important

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

Discussions similaires

  1. apostrophe dans requête
    Par pitoumad dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 21/07/2010, 09h40
  2. Problème d'apostrophe dans requête!
    Par js8bleu dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 20/11/2009, 13h27
  3. [AC-2000] Problème d'Apostrophe dans requête VBA
    Par etoileetoile dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 02/10/2009, 18h37
  4. apostrophe avec requête
    Par osia1 dans le forum VBA Access
    Réponses: 5
    Dernier message: 29/04/2008, 17h09
  5. apostrophe dans requête
    Par viny dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 22/02/2008, 06h20

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