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 :

Erreur PDO mysql


Sujet :

PHP & Base de données

  1. #1
    Membre régulier Avatar de stomerfull
    Inscrit en
    Septembre 2005
    Messages
    307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 307
    Points : 122
    Points
    122
    Par défaut Erreur PDO mysql
    bonjour
    je suis bloqué face à cette erreur incompréhensible

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error'
    voici le code

    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
     
     public function __construct($sDriver='',$sHost='',$sDatabase='',$sUser='',$sPassword='') {
            $sDrive = $sDriver.':dbname='.$sDatabase.";host=".$sHost;
            $this->oPdo=new PDO($sDrive, $sUser, $sPassword);
            $this->oPdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);   
        }
     
        public function executeSQL($sql, $parameters) {
            //1. Prepare the statement
            $stamement=$this->oPdo->prepare($sql);
     
            //2.execute the statement
            $stamement->execute($parameters);
     
            //3. return the result
            return $stamement->fetchAll();
        }
    et la ligne contenant l'erreur
    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
     
     private function SaveOrGetLanguageId($languageName) {
        	$getIdSql="select id from languages where name=:name";
            $result=$this->dbLayer->executeSQL($getIdSql,array(":name"=>$languageName));
            if($result==null||sizeof($result)==0) {
                $saveSql="insert into languages(name) values(:name)";
                $this->dbLayer->executeSQL($saveSql, array(":name"=>$languageName));
     
                if($this->dbLayer->getAttribute(PDO::ATTR_DRIVER_NAME) == 'pgsql') {  
                	 return $this->dbLayer->getLastInsertedId('languages');
                }else{
                	 return $this->dbLayer->getLastInsertedId('languages');	
                }
            } else {
                return $result[0][0];
            }
        }
    Remarque :

    l'application fonctionne sous pgsql mais sous mysql elle me retourne cet erreur
    L'erreur indiqué se trouve sur la ligne de requete qui fait l'insertion
    Merci pour votre aide

  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
    tu n'as pas un numéro après "General error" ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre régulier Avatar de stomerfull
    Inscrit en
    Septembre 2005
    Messages
    307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 307
    Points : 122
    Points
    122
    Par défaut
    voici en intégrale l'erreur retourné
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error' in C:\wamp\www\xxxxxx:19 Stack trace: #0 C:\wamp\www\xxxxxxxxxxxx(19): PDOStatement->fetchAll() #1 C:\wamp\www\xxxxxxxxxx(84): nomdelaClasse->executeSQL('insert into lan...', Array) #2
    j'ai essayer ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    array(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true)
    en plus du paramètre de la methode prepared mais ça ne marche pas

    please help :-)

  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
    Il n'apprecie peut etre pas que tu lui demandes de faire un fetchAll sur le résultat d'une requete INSERT.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Inactif  
    Inscrit en
    Novembre 2008
    Messages
    255
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 255
    Points : 264
    Points
    264
    Par défaut
    Bonjour

    apparemment dans cette discution il a eu le même problème, du à une version de xampp

    http://www.developpez.net/forums/d59...pdo-oci-fetch/

    sinon ne serai ce bug de php

    http://bugs.php.net/bug.php?id=35793

  6. #6
    Membre régulier Avatar de stomerfull
    Inscrit en
    Septembre 2005
    Messages
    307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 307
    Points : 122
    Points
    122
    Par défaut
    merci bien pour votre

    je pense que je suis presque

    en faisant comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     if(!ereg('insert',$sql))
            {
            	return $stamement->fetchAll();
            }
    sabotage a bien raison qu'il n'aime pas un fetchAll sur le résultat d'une requete INSERT.

    ça a marché pour mysq et pgsql :-)

    par contre la le code n'est plus bien a regardé ou qu'en pensez vous? car ici ils sont trop strick sur la qualité des codes , avec update aussi je pense que ça va être la même chose donc je suis obligé de mettre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     if(!ereg('insert',$sql) or !ereg('update',$sql))
            {
            	return $stamement->fetchAll();
            }
    moi j'utilise
    WAMP 2.0
    Version de Apache:2.2.8
    Version de PHP:5.2.6
    Version de MySQL:5.0.51b


    Donc c'est peut être lié à cette version là ?

    je suis en train de voir la piste sur la version ...

Discussions similaires

  1. [PDO] Erreur 08006 timeoud PDO / MYSQL
    Par vince29 dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 27/02/2013, 17h06
  2. erreur PDO avec fetch() mysql avec netbeans
    Par soohikei dans le forum Administration
    Réponses: 14
    Dernier message: 28/06/2011, 15h56
  3. pdo mysql
    Par zenzo dans le forum Requêtes
    Réponses: 11
    Dernier message: 09/03/2006, 00h01
  4. Erreur connexion MySQL-PHP
    Par specialfox dans le forum Installation
    Réponses: 3
    Dernier message: 27/09/2005, 19h47
  5. Erreur connexion mysql
    Par bodbod dans le forum Bases de données
    Réponses: 3
    Dernier message: 10/07/2004, 09h28

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