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 :

PDO et mysql_real_escape_string


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 70
    Points : 53
    Points
    53
    Par défaut PDO et mysql_real_escape_string
    Bonjour,

    Je vois partout qu'il faut utiliser la fonction mysql_real_escape_string pour insérer des données dans une base MySQL.

    J'ai un problème de compréhension de cette fonction car je ne suis pas certain de sa fonction, mais surtout d'implémentation car j'ai un message d'erreur où que je la positionne dans mon code.

    Mon code est structuré ainsi. C'est basé sur un ou deux tuto de ce site.

    classe Model_Template :
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    abstract class Model_Template
    {
    	protected $selectAll;
    	protected $selectById;
     
    	public function __construct()
    	{
    	}
     
    	public function getAll()
    	{
    		$this->selectAll->execute();
    		return $this->selectAll->fetchAll();
    	}
     
    	public function getById($id)
    	{
    		$this->selectById->execute(array($id));
    		return $this->selectById->fetchAll();
    	}
     
    	public function delete($id)
    	{
    		$this->deleteOne->execute(array($id));
    	}
     
    }
    classe Model_Toto :
    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
    16
    17
    18
    19
    20
    21
    22
     
    class Model_Toto extends Model_Template
    {
     
    	public function __construct()
    	{
    		parent::__construct();
     
    		$sql =  'INSERT INTO toto (
    				champ1)
    			VALUES (
    				?)
    		';
    		$this->insertOne = Controller_Template::$db->prepare($sql);
     
    	public function insert(
    		$champ1)
    	{
    		$this->insertOne->execute(array(
    			($champ1)
    		));
    	}
    Pour insérer des données, j'appelle la fonction insert().

    J'ai toujours une erreur lorsque je veux positionner mysql_real_escape_string quelque part, que ce soit dans la classe qui appelle insert(), ou dans la fonction insert().

    Globalement, l'erreur est que je n'ai pas de droit d'accès à la base !

    A votre avis, comment faire, si l'utilisation est encore utile dans ma config ?

    Merci

  2. #2
    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
    mysql_real_escape_string() fonctionne avec l'extension mysql de PHP.
    En PDO, on utilise les requetes préparées.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 70
    Points : 53
    Points
    53
    Par défaut
    euh....

    Si je comprends bien, je ne dois/peux pas utiliser cette fonction.

    Mais alors, dois-je faire quelque chose et quoi ? et où dans mon code ?
    Mais peut-être que PDO le fait tout seul... vrai ou faux ?

    Me voilà de plus en plus perdu.

    Merci pour vos lumières car la lecture des différents posts à ce sujet m'a plutôt embrouillé.

  4. #4
    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
    Mais alors, dois-je faire quelque chose et quoi ?
    En PDO, on utilise les requetes préparées.
    C'est ce que tu fais avec ton prepare() et ton execute() : la requete n'est pas construite en concatenant les données comme ca se fait avec l'extension mysql.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Points : 12 572
    Points
    12 572
    Par défaut
    En fait mysql_real_escape_string() fait une connexion a la base de données pour vérifier le charset utilisé.
    Il prends la dernière connexion utilisée ou si il n'y en a pas le user par défaut : root, d'où le mesage d'erreur que tu as bien fait de nous montrer au passage
    Pas de questions techniques en MP please

    Mon site perso

    Mon profil Viadeo

Discussions similaires

  1. [MySQL] mysql_real_escape_string en PDO?
    Par art23 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 22/03/2015, 14h46
  2. [MySQL] PDO et mysql_real_escape_string
    Par popy67 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 07/06/2009, 23h01
  3. [POO] PDO et fetch_INTO
    Par jeff_! dans le forum Langage
    Réponses: 6
    Dernier message: 25/01/2006, 14h22
  4. [SGBD] Utilisation de mysql_real_escape_string()
    Par Space Cowboy dans le forum Requêtes
    Réponses: 1
    Dernier message: 27/11/2005, 10h24
  5. [MySQL] [SGBD] [mssql] Equivalent mysql_real_escape_string pour mssql
    Par PoZZyX dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 03/10/2005, 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