bonjour les amis. Le but est d'exécuter les 3 requêtes dans une transaction mais c'est seulement la dernière requête qui marche et curieusement. à l'affichage il me'envoie le message que tout s'est bien déroulé.les requêtes update ne marchent pas. Et normalement si les deux requetes ne marchent pas le commit ne devrait pas s'exécuter.
code
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
 
try
 
 
{
 
    // On se connecte à MySQL
 
    $pdo= new pdo('mysql:host=localhost;dbname=projettransaction;charset=utf8', 'root', '');
 
 
}
 
catch(Exception $e)
 
{
 
    // En cas d'erreur, on affiche un message et on arrête tout
 
        die('Erreur : '.$e->getMessage());
 
}
 
    try
{
    //on tente d'exécuter les requêtes suivantes dans une transactions
 
    //on lance la transaction
    $pdo->beginTransaction();
 
    //nos 3 requêtes
    $pdo->query('UPDATE compte SET solde= (solde-$montant) WHERE num_compte=$comptedebiteur');
 
    $pdo->query('UPDATE compte SET solde=(solde+$montant) WHERE num_compte=$comptedebiteur');
 
    $pdo->query('INSERT INTO virement VALUES(02,"28/07/2015","'.$comptedebiteur.'","'.$comptecrediteur.'","'.$montant.'")');
 
    //si jusque là tout se passe bien on valide la transaction
 
	$pdo->commit();
 
    //on affiche un petit message de confirmation
    echo 'Tout s\'est bien passé.';
}
catch(Exception $e) //en cas d'erreur
{
    //on annule la transation
    $pdo->rollback();
 
    //on affiche un message d'erreur ainsi que les erreurs
    echo 'Tout ne s\'est pas bien passé, voir les erreurs ci-dessous<br />';
    echo 'Erreur : '.$e->getMessage().'<br />';
    echo 'N° : '.$e->getCode();
 
    //on arrête l'exécution s'il y a du code après
    exit();
}