Bonjour,
J'utilise PHP 5.2.5
Et mysql : 5.0.45

Une classe sert à se connecter sur ma table gérant les session.
Aujourd'hui elle utilise Query et exec. Hier elle utilisait prepare et execute avec le même "résultat" l'erreur
Warning: PDO::exec() [function.PDO-exec]: 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. in E:\ZMWS\_web.zmwsc\sacAdos\classes\modele\modSessions.php on line 40

Voici ladite classe :
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
53
54
55
56
57
58
59
60
61
<?php
/*16/01/2014 controleur dédié à la gestion des sessions*/
require_once __SAC.'/classes/utilitaires/singleton.class.php';
require_once __SAC.'/classes/modele/4D.php';
 
class ses extends aBsSoLitaire {
 
	private $x;
	private $cx;
	private $sth = null;
	private $my;
	private $ct;
	public $r=array();
 
	 protected  function __construct() {
		parent::__construct ();
		$this->ct = (int) 0;
		$this->iniBase();
	}
 
	private function iniBase(){
	  $this->x = laBas::donneLinstant();
	  $this->cx = $this->x->bx_icise();
	}
 
	private function S_lasession($p){
 
 
		$this->my = (string) "CALL S_lasession";
		$this->my .= '('.$p->quoi.','.$this->cx->quote($p->id).','.$this->cx->quote($p->utid).','.$this->cx->quote($p->emp);
		$this->my .= ','.$this->cx->quote($p->data).','.$this->cx->quote($p->neo).')';
		if($p->quoi == 1){//le seul select
			$this->sth = $this->cx->query($this->my);
			$this->r = $this->sth->fetchAll(PDO::FETCH_ASSOC);
			$this->sth->closeCursor();
			$this->sth = null;
		return $this->r;
		}else{//insert ou update ou delete
			try{
				$this->r = $this->cx->exec($this->my);
			}catch(PDOException $e){
				echo(sql_error($e));
			}
			return $this->r;
		}
	}
	//Méthodes publiques dont la première d'un singleton
	public static final function donneLinstant(){
		$bob = parent::donneLinstance(__CLASS__);
		if($bob === FALSE){
			throw new Exception('ERREUR : principe de départ non respecté');
		}else{
			return $bob;
		}
	}
 
	final public function appel($a,$r){
		return $this->$a($r);
	}
}
?>
Voici la procédure stockée correspondante :
Code sql : 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
CREATE PROCEDURE `S_lasession`(
IN `p_quoi` TINYINT,
IN `p_id` VARCHAR(255),
IN `p_utid` MEDIUMINT(8),
IN `p_emp` VARCHAR(40),
IN `p_data` TEXT ,
IN `p_neID` VARCHAR(255))
BEGIN
DECLARE v_count TINYINT DEFAULT 0;
CASE p_quoi
 WHEN 1 THEN
  SELECT `s_lessessions`.`sdata` AS 'D', `s_lessessions`.`sempreinte` AS 'Semp'
  FROM `icise`.`s_lessessions`
  WHERE sid = p_id ORDER BY sstamp DESC LIMIT 0 , 1;
 WHEN 2 THEN
  DELETE FROM `icise`.`s_lessessions`
  WHERE `sstamp` < SUBTIME(now(),'0 0:2:0.001');
  SELECT COUNT(`sid`) INTO v_count FROM `icise`.`s_lessessions` WHERE `sid`=p_id;
  IF (v_count > 0) THEN
    UPDATE `icise`.`s_lessessions` SET `sdata`=p_data,`sempreinte`=p_emp WHERE `sid`=p_id;
  ELSE
    INSERT INTO `icise`.`s_lessessions` (`sid`,`sdata`,`sempreinte`,`sutid`)
    VALUES(p_id,p_data,p_emp,p_utid);
  END IF;
 WHEN 3 THEN
   DELETE FROM `icise`.`s_lessessions` WHERE `sid`=p_id;
 WHEN 4 THEN
   DELETE FROM `icise`.`s_lessessions`
   WHERE (`sutid`=p_utid) OR(`sstamp` < SUBTIME(now(),'0 0:2:0.001'));
 WHEN 5 THEN
   UPDATE `icise`.`s_lessessions` SET `s_lessessions`.`sid`=p_neID;
END CASE;
END$$
Bien évidemment la connexion PDO utilise :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
$this->bx[$i] = new PDO($this->dsn[$i], $this->lUt, $this->passe, array(PDO::ATTR_PERSISTENT=>true,PDO::MYSQL_ATTR_USE_BUFFERED_QUERY=>true));
Nous nous abstiendrons de commenter l'efficacité de
Code : Sélectionner tout - Visualiser dans une fenêtre à part
PDO::MYSQL_ATTR_USE_BUFFERED_QUERY=>true


Si vous pouviez aider...
Merci d'avance !