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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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 521
    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 521
    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.

+ 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