Précédent   Forum des professionnels en informatique > PHP > Outils > Zend > Zend Framework > Zend_Db
Zend_Db Forum d'entraide pour le composant Zend_Db du Zend Framework (création de requêtes, abstraction, ORM etc.). Avant de poster -> FAQ Zend_Db.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/01/2008, 16h23   #1
Membre actif
 
Avatar de __fabrice
 
Fabrice
Inscription : août 2004
Messages : 311
Détails du profil
Informations personnelles :
Nom : Fabrice
Âge : 40

Informations forums :
Inscription : août 2004
Messages : 311
Points : 180
Points : 180
Envoyer un message via ICQ à __fabrice Envoyer un message via MSN à __fabrice
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 :
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 :
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 :
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
__fabrice est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2008, 11h48   #2
Rédacteur
 
Homme Jean-Pierre
Inscription : août 2005
Messages : 333
Détails du profil
Informations personnelles :
Nom : Homme Jean-Pierre
Âge : 26
Localisation : Suisse

Informations forums :
Inscription : août 2005
Messages : 333
Points : 442
Points : 442
Hello,

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


Code :
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 ???
__________________
Mes articles DVP : http://jp-grossglauser.developpez.com
Guardian_7 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2008, 11h59   #3
Membre actif
 
Avatar de __fabrice
 
Fabrice
Inscription : août 2004
Messages : 311
Détails du profil
Informations personnelles :
Nom : Fabrice
Âge : 40

Informations forums :
Inscription : août 2004
Messages : 311
Points : 180
Points : 180
Envoyer un message via ICQ à __fabrice Envoyer un message via MSN à __fabrice
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 :
$this->db = Zend_Db::factory('pdo_mysql', $this->arrayParams);
et en recupérant la propriété comme çà :
Code :
$arrayRows = $this->db->fetchRow($this->sql);
çà change quelque chose ?, je pense pas...

Fabrice
__fabrice est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h53.


 
 
 
 
Partenaires

Hébergement Web