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 :

Requête sql avec = [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé
    Avatar de Freedolphin
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2006
    Messages
    291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2006
    Messages : 291
    Par défaut Requête sql avec =
    Bonjour à tous,

    Pour interroger une base de données, j'avais une requête toute bête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = mysql_query("select * from matable where categorie = '$_POST[cat]' ");
    Tout fonctionnait très bien jusqu'à ces derniers jours. Parmi les changements opérés récemment sur la base, c'est que tout est passé en UTF8. Est-ce que cela peut avoir une incidence sur la requête ?
    J'ai essayé ceci : where categorie COLLATE utf8_bin = '$cat' mais sans résultat.
    En revanche, cela re-marche avec un LIKE à la place du signe égal (et sans collate).
    Quelqu'un aurait-il une idée ?
    Merci d'avance !

  2. #2
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Salut,

    bien sûr que ça a une incidence. J'espère que vous n'avez pas juste changé l'interclassement, changer l'encodage d'une base de données c'est un poil plus compliqué que ça.
    Une fois la base mise à jour, quid des scripts ? Ils ont tous été réencodés en utf8 sans BOM ?
    Les charsets sur les pages ont-il été aussi passés en utf8 ?
    Bref, il faut surtout rester homogène sur tout la ligne pour éviter des surprises.

  3. #3
    Membre éclairé
    Avatar de Freedolphin
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2006
    Messages
    291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2006
    Messages : 291
    Par défaut
    Oui, bien sûr, tout a été changé, que ce soit dans la BDD et dans les fichiers PHP (charset=utf-8) ou encore le fichier de config (mysql_set_charset( 'utf8' )).
    Le seul problème rencontré est au niveau de cette requête où le signe "égal" ne renvoie plus de résultat.

  4. #4
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Il faut bien tout vérifier.
    Et puis injecter une valeur comme ça en provenance du site sans aucun échappement ça pique

  5. #5
    Membre éclairé
    Avatar de Freedolphin
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2006
    Messages
    291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2006
    Messages : 291
    Par défaut
    J'ai mis une variable comme ça, pour expliquer que ça venait d'un formulaire en POST, mais évidemment les données sont traitées.
    Bon apparemment, après des heures d'investigation, je pense que ça vient d'un mauvais enregistrement avec des espaces insérés. Je pense avoir réglé le truc avec un TRIM.
    Tout ça pour ça !

  6. #6
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 533
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 533
    Par défaut
    Salut,

    Attention , l'api mysql est obsolète et supprimée depuis php version 7 et ne deverait plus être utilisée.

    Il faut passer à mysqli ou même mieux PDO ensuite préparer correctement les requêtes afin d'éviter les risques des injections sql.

  7. #7
    Membre éclairé
    Avatar de Freedolphin
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2006
    Messages
    291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2006
    Messages : 291
    Par défaut
    Je ne suis pas sûr que ça mérite une alerte
    Le caractère obsolète de mysql en PHP7 ne l'empêche pas de fonctionner sous des versions antérieures...
    Quant au mode PDO, c'est un choix de programmation, pas une obligation.
    Et je ne vois pas ce que les injections sql viennent faire dans le sujet, mais il peut être utile en effet de le rappeler.
    Pour ma part, le passage à mysqli est en cours, mais c'est un gros chantier

  8. #8
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Citation Envoyé par Freedolphin Voir le message
    Pour ma part, le passage à mysqli est en cours, mais c'est un gros chantier
    Si c'est un gros chantier, c'est que vous n'avez pas centralisé les appels à la base de données...
    Vous devez repasser à travers tout le code et là effectivement c'est chaud cacao

  9. #9
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 533
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 533
    Par défaut
    Citation Envoyé par Freedolphin Voir le message
    Je ne suis pas sûr que ça mérite une alerte ....
    Et je ne vois pas ce que les injections sql viennent faire dans le sujet
    Apparemment, tu ne sais pas ce que ça veux dire une injection sql et tu me dis que ça ne mérite pas une alerte

    Citation Envoyé par Freedolphin Voir le message
    Quant au mode PDO, c'est un choix de programmation, pas une obligation.
    Quand tu auras des accents et des caractères spéciaux dans ta base de donnée, tu sauras que PDO est vraiment une obligation.

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

Discussions similaires

  1. requête sql avec clause INNER JOIN
    Par new_wave dans le forum Langage SQL
    Réponses: 1
    Dernier message: 12/08/2005, 15h47
  2. Requête SQL avec une réponse unique
    Par Glutinus dans le forum Langage SQL
    Réponses: 5
    Dernier message: 06/07/2005, 16h35
  3. Problème de requête SQL avec instruction TRANSFORM
    Par Nosper dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 21/06/2005, 16h15
  4. requête SQL avec paramètre en vb avec base de donnée SQL srv
    Par dialydany dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 01/02/2005, 10h33
  5. PB requète SQL avec Interbase
    Par missllyss dans le forum InterBase
    Réponses: 2
    Dernier message: 15/07/2003, 11h37

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