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 :

Extension PDO/Problème execute [PDO]


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 18
    Points : 5
    Points
    5
    Par défaut Extension PDO/Problème execute
    Bonjour,

    J'utilise PDO pour mes besoins de connexions à une base de données MySQL. Comme j'ai des traitements qui se répètent souvent, j'ai implémenté une classe héritée de PDO. Son code est le suivant:

    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
    class MyPDO extends PDO {
     
        public function _construct($db_path,$host,$user,$password)
        {
            parent::__construct($db_path,$host,$password);
     
            $this->setAttribute(self::ERRMODE,self::ERRMODE_EXCEPTION);
     
        }
     
        protected function My_Select($req)
        {
             $tmp = $this->prepare($req);
     
            $tmp->setfetchmode(pdo::FETCH_ASSOC);
     
            $tmp->execute();
     
            echo $tmp->rowCount();
     
     
           $res = $tmp->fetchAll();
     
            return($res);
     
     
        }
    }
    J'ai rajouté " echo $tmp->rowCount(); " pour voir si la requête retourne quelque chose. Elle affiche 0. J'ai même essayé le "if($tmp->execute){ echo 'sucess';} else {echo 'fail'} " mais ça retourne fail. J'arrive pas à comprendre où se situe le problème.

    PS: pour tester cette classe j'utilise une autre classe test.php où j'instancie celle là.

  2. #2
    Membre actif

    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 191
    Points : 275
    Points
    275
    Par défaut
    il n'y aurai pas un problème à cette ligne
    parent::__construct($db_path,$host,$password);
    sinon ton constructeur manque un "_" en début aussi.
    modifie comme ci-dessous en adaptant $dsn
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        public function __construct($db_path,$host,$user,$password)
        {
            $dsn = 'mysql:dbname=testdb;host=127.0.0.1';// combinaison de $db_path,$host
            parent::__construct($dsn ,$user,$password);
     
            $this->setAttribute(self::ERRMODE,self::ERRMODE_EXCEPTION);
     
        }

  3. #3
    Futur Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 18
    Points : 5
    Points
    5
    Par défaut
    Merci Helfima.
    En fait, j'ai apporté une petite modification à ton constructeur (j'ai juste changé le nombre de paramètre). Là mon problème est résolu mais un autre problème apparaît: quand j'exécute il m'affiche :

    Fatal error: Undefined class constant 'ERRMODE' in C:\wamp\www\ElectroDiscount\MyPDO.php on line 9.

    Apparement, il ne reconnait pas ERRMODE. Donc, je dois la désactiver la gestion d'erreur par exception.

    Le code qui marche est le suivant:

    public function __construct($dsn,$user,$password)
    {
    parent::__construct($dsn ,$user,$password); //$dsn est passé comme paramètre lors de l'appel au constructeur


    }

  4. #4
    Futur Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 18
    Points : 5
    Points
    5
    Par défaut
    Bon! J'ai trouvé ! Il faut juste utiliser ATTR_ERRMODE au lieu de ERRMODE.

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

Discussions similaires

  1. Problème execution requête (recordsource)
    Par Access Newbie dans le forum Access
    Réponses: 4
    Dernier message: 07/08/2006, 14h47
  2. Problème execution d'une DLL en ASP
    Par turcotm dans le forum ASP
    Réponses: 3
    Dernier message: 03/09/2005, 09h16
  3. Problème execution script perl
    Par 00sebbe dans le forum Apache
    Réponses: 1
    Dernier message: 29/08/2005, 14h43
  4. Problème executable et windows
    Par mulot49 dans le forum MFC
    Réponses: 9
    Dernier message: 17/06/2004, 09h34
  5. problème execution dll
    Par semenzato dans le forum MFC
    Réponses: 15
    Dernier message: 19/12/2003, 16h40

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