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

Zend_Db PHP Discussion :

Erreur lors des plusieurs appels de procédures stockées (dans une classe)


Sujet :

Zend_Db PHP

  1. #1
    Membre habitué
    Avatar de __fabrice
    Homme Profil pro
    Développeur Back-End
    Inscrit en
    Août 2004
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Août 2004
    Messages : 404
    Points : 194
    Points
    194
    Par défaut Erreur lors des plusieurs appels de procédures stockées (dans une classe)
    Salut à tous,

    Je fais du Framework de Zend, mais pas en MVC.

    J'ai une classe qui utilise le Zend_Db. Mais lorsque dans les fonctions je fais appel à des procédures stockées (apres la premiere) j'ai une erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    'SQLSTATE[HY000]: General error: 2014 Cannot execute queries while other unbuffered queries are active. 
    Consider using PDOStatement::fetchAll(). 
    Alternatively, if your code is only ever going to run against mysql, you may enable query buffering by setting the PDO::MYSQL_ATTR_USE_BUFFERED_QUERY attribute.
    La réponse est là, mais, utilisant le Framework, je ne peux pas modifier les parametres de PDO.
    J'ai besoin evidement de faire plusieurs procédures stockées ( je résume le code...) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function __construct() {
    	require_once ('Zend/Config/Xml.php');
    	$config = new Zend_Config_Xml($_SERVER['DOCUMENT_ROOT'] . '/configs/config.xml', 'database');
    	$params = array( 'host' => $config->host, 'username' => $config->username, 'password' => $config->password, 'dbname' => $config->dbname);			
    	$this->db = Zend_Db::factory('pdo_mysql', $params);
    }
    et ensuite, dans les fonctions, et ainsi de suite dans les fonctions qui suivent, ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (isset($this->db)) {
    	$this->sql = "call book_accueil(" . $this->idBook . ")";
    	$arrayRows = $this->db->fetchRow($this->sql);
    }
    Lors de l'appel de la seconde fonction, erreur !

    Merci de m'aider.
    Fabrice

  2. #2
    Invité
    Invité(e)
    Par défaut
    Hello,

    Tu peux paramétrer les options de PDO à partir du constructeur Zend_Db::factory(), exemple (manuel ZF) :


    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
     
    <?php
    $pdoParams = array(
        PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true
    );
     
    $params = array(
        'host'           => '127.0.0.1',
        'username'       => 'webuser',
        'password'       => 'xxxxxxxx',
        'dbname'         => 'test',
        'driver_options' => $pdoParams
    );
     
    $db = Zend_Db::factory('Pdo_Mysql', $params);
     
    // [...]
    ?>
    Ca répond à ton problème ???

  3. #3
    Membre habitué
    Avatar de __fabrice
    Homme Profil pro
    Développeur Back-End
    Inscrit en
    Août 2004
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Août 2004
    Messages : 404
    Points : 194
    Points
    194
    Par défaut
    salut,

    J'avais deja essayé mais cela ne marche pas, je vois pas pourquoi d'ailleurs. Est ce que cela viendrai qu'en fesant çà dans le constructeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->db = Zend_Db::factory('pdo_mysql', $this->arrayParams);
    et en recupérant la propriété comme çà :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $arrayRows = $this->db->fetchRow($this->sql);
    çà change quelque chose ?, je pense pas...

    Fabrice

Discussions similaires

  1. [Oracle] Erreur lors d'un appel de procédure via Oci
    Par NoPr0n dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 30/12/2011, 16h44
  2. Question sur la déclaration d'un paramètre lors de l'appel du procédure stockée
    Par th.garcia dans le forum Interfaces de programmation
    Réponses: 2
    Dernier message: 26/06/2009, 13h58
  3. Réponses: 1
    Dernier message: 04/06/2009, 10h21
  4. Réponses: 2
    Dernier message: 20/03/2006, 09h39
  5. Réponses: 1
    Dernier message: 26/05/2005, 12h24

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