Salut!

Voilà les gars, j'ai un petit bout de code qui créer des enregistrements en base et qui fonctionne très bien. Il enchaine plusieurs UPDATE et SELECT en sql via un objet global PDO $bdd. J'ai voulu ajouter une petite procédure stockée pour vérifier un compteur.
La voici:

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
34
35
36
 
DELIMITER |
DROP PROCEDURE fidelitegmt.verif_generation|
CREATE PROCEDURE fidelitegmt.verif_generation(aidsoc INT,a_nbcarte INT)
BEGIN
 
/*******VARIABLE*******/
DECLARE var_nbmax INTEGER(32);
DECLARE var_nbrestant INTEGER(32);
DECLARE var_new_nb_restant VARCHAR(10);
DECLARE var_message VARCHAR(80);
DECLARE var_ok BOOL;
/*******TRAITEMENT*****/
 
SELECT NBMAX,(NBMAX-NBENCOURS)
INTO var_nbmax,var_nbrestant
FROM fidelitegmt.fid_kdocpt
WHERE TYPCOMPT = 1 AND IDSOC = aidsoc;
 
SET var_new_nb_restant = var_nbrestant - a_nbcarte;
 
IF var_new_nb_restant < 0 then
 
SET var_ok = FALSE;
SET var_message = CONCAT('Impossible... Pas assez de credit restant. Il vous reste ',var_nbrestant,' generations.');
 
ELSE
 
SET var_ok = TRUE;
SET var_message = CONCAT('Generation OK. Il vous reste ',var_new_nb_restant,' generation.');
 
END IF;
 
SELECT var_ok as ok, var_message as msg;
 
END|
Elle fonctionne très bien toute seul dans le php comme ça:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
$query = "CALL $bdd_fidelite.verif_generation(".$_ID_SOC.",".$NB.")";    
    $result = $bdd->prepare($query);
    $result ->execute();
    if (!$res = $result->fetchObject()) { return "ER"; } 
    $code_retour = $res->msg;
Le problème c'est que les requetes qui suivent dans le script bloque au moindre $bdd->query/exec...

Une idée?

Merci d'avance