Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
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/07/2008, 14h51   #1
Membre chevronné
 
Avatar de grabriel
 
Inscription : septembre 2006
Messages : 935
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 935
Points : 626
Points : 626
Par défaut [ADODB] portée d'une transaction dans une fonction

Bonjour,

J'essaye de faire une transaction mais ca marche pas, je ne sais pas ou je me suis gouré. Si quelqu'un peux jeter un coup d'oeil, ca doit pas être un gros truc.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
fonction mafonction (){
//plein de code ici
 
//je commence ma transaction
       $db->StartTrans();
	    foreach($produits as $produit)
		{
	       //je fais un select
              /*ma fonction blackbox effectue un insert et c'est cet insert que je voudrais annuler si ca me renvoie false
*/
			$res = blackbox();			
	        if ( $res === false ){
                //je force le rollback
	        	$db->FailTrans();
	        	$db->CompleteTrans();
	        	return false;
	        }
		}
//tout se passe bien je commit
	    $db->CompleteTrans();
//ici aussi plein de code
}
Est ce qu'on peux revenir sur des requêtes effectuée dans une autre fonction? Sinon quel est le moyen pour moi de résoudre mon problème.

Merci.
grabriel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/08/2008, 13h45   #2
Membre chevronné
 
Avatar de popo
 
Inscription : mars 2005
Messages : 672
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 672
Points : 705
Points : 705
Citation:
if ( $res === false ){
tu as mis 3 fois le signe "=" donc tu ne teste plus si c'est égal à false. L'égalité se teste avec 2 signe "="

essaie ceci

Code :
if ( $res == false ){ ... }
ou

popo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2008, 09h19   #3
Membre chevronné
 
Avatar de grabriel
 
Inscription : septembre 2006
Messages : 935
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 935
Points : 626
Points : 626
Citation:
tu as mis 3 fois le signe "=" donc tu ne teste plus si c'est égal à false. L'égalité se teste avec 2 signe "="
je fais une comparaison stricte $res doit etre un boolean.

Pour info va visiter cette page avec les différents comparateurs :
http://fr.php.net/manual/fr/types.comparisons.php

Mon problème à été résolu, l'erreur venait de mes tables qui étaient en myisam. Depuis je les ai passés en InnoDB.
grabriel est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h30.


 
 
 
 
Partenaires

Hébergement Web