Bonjour,

j'effectue un try/catch dans le cadre d'une transaction ce qui fait que le commit ne sera effectué que si la requête (un INSERT) sera exécutée sans problème. Cela dit, si une autre erreur PHP se produit, on va aller dans le catch et on fera un rollback.
Mon code est le suivant :
Code php : 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
 public function save(string $email = null, int $sesa, ?int $id = 0) {
 
        try
        {
            $ppp = new PDOPlusPlus();
 
            $ppp->startTransaction();
 
            $local_address = explode("@",$email)[0];
            $domain = explode("@",$email)[1];
 
            if ( $id ===  0)
            { //si $email pas en bdd, alors insert
                $sql = <<<sql
INSERT INTO em_mail
SET 
    EM_email = {$ppp($local_address)},
    DM_ident = (SELECT DM_ident FROM DM_domain WHERE DM_domain_name = {$ppp($domain)}),
    US_ident = (SELECT US_ident FROM US_user WHERE US_sesa = {$ppp($sesa,
                    'int')})
sql;
                $id = $ppp->insert($sql);
                $ppp->commit();
 
            }
        }
 
 
        catch (\Exception $e) {
                $ppp->rollback();
            } // sur cette table, pas d'update
    }
Une erreur surviendra si $email est null. Si c'est le cas, on passera dans le catch avant l'exécution de la requête et donc un rollback sera exécuté. Cette façon de faire est-elle convenable ?