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 :

Caractères spéciaux et PDO [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé Avatar de Tillo
    Homme Profil pro
    Webmaster
    Inscrit en
    Octobre 2007
    Messages
    494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 494
    Points : 683
    Points
    683
    Par défaut Caractères spéciaux et PDO
    Bonjour à tous,

    Je suis en train de passer tout doucement à PDO, je ne sais pas trop si on peut dire ça comme ça, mais je suppose que vous allez comprendre ce que je veux dire.
    Je récupère une chaîne de caractère qui a été écrite par un utilisateur lambda qui a donc la possibilité d'y mettre absolument n'importe quoi comme caractère, issu de n'importe quelle touche du clavier.

    Le problème, c'est que quand je veux mettre cette "ligne récupérée" dans ma base de données, ça génére une jolie erreur (j'ai juste enlevé le chemin vers mon fichier) :

    PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 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 'agit plus pr?cisement de Onnezies-Hoonelles )' WHERE n_indi='18I' and n_eve='31' at line 1 in XXXXX on line 312
    Les lignes de codes qui correspondent sont les suivantes:

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $req = "UPDATE evenements SET note = '$evenement->note' WHERE n_indi='$individu->ref' and n_eve='$nb_eve'";
    $resultat = $pdo->exec($req);
    Même si je n'étais pas vraiment convaincu, j'ai tout de même essayé htmlspecialchars() et htmlentities() mais sans succès.
    Il me faudrait une fonction qui dise au serveur "prends tout ce qu'il y a entre les quotes qui sont aux extrémités", mais existe-t-elle ?

    Merci et à bientôt,
    Alexis.
    J'aimerais mieux être le premier dans ce village que le second à Rome. (Caius Julius Caesar)

    J'ai aussi un site sur la Grande Guerre: Histoires de Poilus

  2. #2
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2012
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Avril 2012
    Messages : 133
    Points : 208
    Points
    208
    Par défaut
    Salut,

    Donc c'est pas bien du tout de mettre les valeurs directement dans la requête.

    http://php.net/manual/fr/pdo.prepare.php

  3. #3
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Ce problème n'est pas lié à PDO, il se posait de la meme façon avec l'extension mysql.
    En pdo, quand on place des données externes ou ayant besoin d'être echappées, on fait une requête préparée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $sth = $pdo->prepare("UPDATE evenements SET note = :note WHERE n_indi=:n_indi and n_eve=:nb_eve");
    $sth->execute(array(':note'=>$evenement->note, ':n_indi'=>$individu->ref, ':nb_eve'=>$nb_eve));
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  4. #4
    Membre éclairé Avatar de Tillo
    Homme Profil pro
    Webmaster
    Inscrit en
    Octobre 2007
    Messages
    494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 494
    Points : 683
    Points
    683
    Par défaut
    Aaaaah c'est donc à ça que servent les requêtes préparées !

    Il s'agit d'un projet qu'il contient beaucoup de requêtes, je vais toutes les changer pour qu'elles soient préparées et je vous tiens au courant.

    Merci
    J'aimerais mieux être le premier dans ce village que le second à Rome. (Caius Julius Caesar)

    J'ai aussi un site sur la Grande Guerre: Histoires de Poilus

  5. #5
    Membre éclairé Avatar de Tillo
    Homme Profil pro
    Webmaster
    Inscrit en
    Octobre 2007
    Messages
    494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 494
    Points : 683
    Points
    683
    Par défaut
    Le problème initial est résolu. Merci à tous.
    Un autre est apparu mais c'est une autre histoire.
    J'aimerais mieux être le premier dans ce village que le second à Rome. (Caius Julius Caesar)

    J'ai aussi un site sur la Grande Guerre: Histoires de Poilus

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

Discussions similaires

  1. caractères spéciaux
    Par mat10000 dans le forum Flash
    Réponses: 16
    Dernier message: 23/10/2003, 13h22
  2. Où trouver la liste des caractères spéciaux?
    Par gamez dans le forum Langage
    Réponses: 3
    Dernier message: 19/08/2003, 17h54
  3. Transformation XSL et caractères spéciaux
    Par Sylvain Leray dans le forum XMLRAD
    Réponses: 4
    Dernier message: 28/04/2003, 10h38
  4. [Sybase] filtre sur caractères spéciaux
    Par montelieri dans le forum Sybase
    Réponses: 4
    Dernier message: 07/04/2003, 16h49
  5. Traiter les caractères spéciaux
    Par ricola dans le forum Langage
    Réponses: 2
    Dernier message: 20/02/2003, 09h23

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