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 :

Where avec caractères speciaux [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre actif

    Homme Profil pro
    Webmaster, Réalisateur Vidéo, Chef de projet Web documentaire
    Inscrit en
    Juillet 2006
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webmaster, Réalisateur Vidéo, Chef de projet Web documentaire
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2006
    Messages : 404
    Points : 241
    Points
    241
    Par défaut Where avec caractères speciaux
    Bonjour
    je veux récupérer mes entrées de table avec un where d'une variable.
    dès que j'ai des ' ou des " dans ma chaine le where ne trouve rien.
    J'ai essayé un htmlentities mais ça ne fonctionne pas.
    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
     
    $prod=$_POST[prod];
    if($prod=='autrep'){
        $prod=$_POST['newprod'];
        $prod2='autrep';
    }
    $prod=  addslashes($prod);
    $prodpouralerte=  htmlentities($prod,ENT_QUOTES,'ISO-8859-1');
     
    // recupertaion de l'id de prod 
    $mysqlprod="SELECT idprod FROM `list_prod`WHERE  `prod` ='$prodpouralerte'";
    $resultat=mysql_query($mysqlprod)or die (mysql_error()) ;
    while ($listeprod = mysql_fetch_assoc($resultat)){
        $idprod=$listeprod['idprod'];
    }

  2. #2
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    Il ne faut pas utiliser addslashes() ni htmlentities(), mais utiliser la fonction d'échappement dédiée aux données dans une Bdd : mysql_real_escape_string().

    Essai déjà avec ça.

    A coté de ça, il faut voir comment ont été insérer (enregistrés) tes données.
    Pour le savoir il suffit de le vérifier avec PhpMyAdmin (ou autre client MySQL).

    Si par exemple une donné contenant des simples ou doubles quote (' ou/et ") contient des antislaches genre : l\'affaire, alors ça ne va pas.
    Du coup il faut réparer ça sinon ta requête SELECT que tu fais actuellement causera problème, voir pire, devoir enfoncer le clou un peu plus dans l'erreur en exploitant je ne sais quel combine pour que ça fonctionne.

    De même qu'il faudrait vérifier comment est obtenue une donnée en POST, s'il y a aussi des antislash ou pas.

    Mais encore, vérifier la valeur de magic_quotes_gpc du coté du php.ini.
    Il est très fortement recommandé quelle soit désactivée (valeur à Off).


    Petite parenthèse au passage : les fonctions mysql_truc_muche() sont obsolètes, et un des 4 matins elles ne feront plus partie du core de Php.
    Php offre 2 autres moyen (librairie) pour manipuler une Bdd Mysql : mysqli (ou MYSQLi Objet) et PDO.
    -> la doc : MySQL


    Fais le point sur tout cela
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  3. #3
    Membre actif

    Homme Profil pro
    Webmaster, Réalisateur Vidéo, Chef de projet Web documentaire
    Inscrit en
    Juillet 2006
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webmaster, Réalisateur Vidéo, Chef de projet Web documentaire
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2006
    Messages : 404
    Points : 241
    Points
    241
    Par défaut
    Mon problème venait du formulaire qui envoyait les données.
    Les données venaient d'un select remplit par la base.
    A chaque fois qu'il y avait un double quote celui n'était pas transmis.
    j'ai donc rajouté un html entities dans le value de l'option select.
    et c'est rentré dans l'ordre.

    AVANT
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     echo '<option value="'.$listeprod['prod'].'"'.$selected.'">'.$listeprod['prod'].'</option>';
    APRES
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     echo '<option value="'.htmlentities($listeprod['prod']).'"'.$selected.'">'.$listeprod['prod'].'</option>';
    merci RunCodePHP c'est en affichant le POSt que j'ai trouvé le souci.

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

Discussions similaires

  1. Sed avec caractère speciaux
    Par nicnictout dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 01/09/2010, 11h55
  2. [AJAX] caractéres speciaux avec ajax
    Par bylka dans le forum AJAX
    Réponses: 2
    Dernier message: 24/06/2009, 15h16
  3. Probléme avec les caractéres speciaux et encoding
    Par parou dans le forum Général Java
    Réponses: 8
    Dernier message: 29/01/2009, 12h47
  4. [AJAX] Caractères speciaux avec responseText
    Par aztec dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 05/10/2008, 18h50
  5. Probleme de lecture d'un fichier avec caractères speciaux
    Par bygui dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 26/06/2006, 09h35

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