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 :

upgrade extension de pdo avec php 5.3 [PDO]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé Avatar de gtraxx
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 043
    Points : 570
    Points
    570
    Par défaut upgrade extension de pdo avec php 5.3
    Bonsoir à tous, j'ai étendu PDO dans php 5.2 sans aucun problème.
    Cette extension est définie dans ma librairie magix cjquery.
    Une chose que je ne comprend pas encore c'est pourquoi elle ne fonctionne pas sous php 5.3.
    C'est surtout les fetch qui débloque, et me retourne cette erreur :
    SQLSTATE[HY000]: General error: mode must be an integer382
    J'essaie de trouver les modifications à faire pour upgrader la librairie.
    Une idée sur la cause du message ?
    Voila le début de ma class avec l'instance principal :
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    function __construct () 
        {
        	if (!(self::getInfo() instanceof CallDbData)) {
        		throw new Exception('Invalid instanceof CallDbData');
        	}
        	if (!(self::PDOInstance() instanceof PDO)) {
        		throw new Exception('Invalid instanceof PDO');
        	}
            try 
            {
    			self::PDOInstance()->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            }
            catch(PDOException $e){
            	print $e->getMessage();
    		}
        }
        /**
         * instance singleton self (DataObjects)
         * @access public
         */
        public static function getInstance(){
        	if (!isset(self::$instance)){
        		if(is_null(self::$instance)){
    				self::$instance = new DataObjects();
    			}
          	}
    		return self::$instance;
        }
    	/**
         * instance singleton self (CallDbData)
         * @access protected
         */
        protected static function getInfo(){
        	if (!isset(self::$getinfo)){
        		if(is_null(self::$getinfo)){
    				self::$getinfo = new CallDbData();
    			}
          	}
    		return self::$getinfo;
        }
    	/**
         * instance singleton self (PDO)
         * @access protected
         */
        protected static function PDOInstance(){
        	if (!isset(self::$PDOInstance)){
        		if(is_null(self::$PDOInstance)){
    				self::$PDOInstance = new PDO(self::getInfo()->getconnStr(),self::getInfo()->getuser(),self::getInfo()->getpass());
    			}
          	}
    		return self::$PDOInstance;
        }
    Lorsque je repasse sous php 5.2 sa fonctionne, puis si je bascule le message reviens avec un simple fetchall
    Au petit déjeuner, je prend du PHP et au souper du jQuery.
    AFUP 2009 : Bien optimiser son code pour le référencement
    Mon projet open source de librairie PHP 5: magix cjquery

  2. #2
    Membre confirmé Avatar de gtraxx
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 043
    Points : 570
    Points
    570
    Par défaut
    Avec PHP 5.2 mon exemple me retourne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Array ( [0] => Array ( [idmsg] => 1 [0] => 1 [subject] => fds [1] => fds [content] => fd [2] => fd ) )
    Avec php 5.3 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SQLSTATE[HY000]: General error: mode must be an integer382
    Je pense que c'est une erreur ou une adaptation à faire dans la classe.
    Le problème c'est que je ne sais ou chercher
    Un truc curieux c'est que l'insertion fonctionne normalement
    Voila la fonction fetch redéfinie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public function fetch($sql,$execute=false,$mode,$debugParams){
    		try{
    			$prepare = $this->prepare($sql);
    			$prepare->setFetchMode($this->setMode($mode));
    			$execute ? $prepare->execute($execute) : $prepare->execute();
    			$debugParams?$prepare->debugDumpParams():'';
    		    $result = $prepare->fetch();
    		    $prepare->closeCursor();
    		}catch(Exception $e){}
    		return $result;
    	}
    Y a t-il une différence entre le setFetchMode de PHP 5.2 et celui de 5.3 ?
    C'est peut être un début

    EDIT: C'est bien setFetchMode le fautif
    Au petit déjeuner, je prend du PHP et au souper du jQuery.
    AFUP 2009 : Bien optimiser son code pour le référencement
    Mon projet open source de librairie PHP 5: magix cjquery

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

Discussions similaires

  1. [PDO] Mysql_connect et PDO avec PHP 4
    Par nounouuuuu201186 dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 13/09/2013, 21h27
  2. Installation extensions pour php-cli sur serveur avec PHP/apache
    Par BobLunique dans le forum Applications et environnements graphiques
    Réponses: 1
    Dernier message: 12/02/2008, 17h27
  3. Peut on faire avec JDBC la même chose que PDO en PHP ?
    Par arnaudperfect dans le forum JDBC
    Réponses: 1
    Dernier message: 13/09/2007, 08h38
  4. [PDO] Pb instanciation $statement avec PDO sous PHP
    Par tigunn dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 22/02/2007, 20h45
  5. Probleme avec l'objet PDO en PHP
    Par krovomi dans le forum Connexion aux bases de données
    Réponses: 1
    Dernier message: 03/05/2006, 12h18

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