Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
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 28/06/2011, 16h31   #1
Invité de passage
 
Homme
Ingénieur développement logiciels
Inscription : juin 2011
Messages : 8
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2011
Messages : 8
Points : 0
Points : 0
Par défaut Procédure stokée blocante Mysql, PHP et PDO

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 :
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 :
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
vapotheloz 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 02h21.


 
 
 
 
Partenaires

Hébergement Web