Salut,
J'ai une question sur l'utilisation de try catch imbriqués lors d'opération PDO sur une bdd.
Le code est schématique mais le principe est là:
En cas d'erreur dans le deuxième try/catch (update), le premier est-il déclenché aussi (CODE ERREUR1 s'execute-t-il?) ?Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 try{ //insertion PDO dans la table1; $table1->insert($args); $lastid=$db->lastInsertId(); try{ //update PDO dans la table 1 //update PDO dans la table 2 } catch(Exception $e){ //CODE ERREUR2: erreur de l'update d'une(ou des deux) table 1/2 $table1->delete($lastid); echo 'Une erreur 2 s\'est produite'; } } catch(Exception $e){ //CODE ERREUR1: Une erreur s'est produite lors de l'insertion dans la table 1 echo 'Une erreur 1 s\'est produite'; }
Si oui, comment y remédier ??
Je cherche ici à remplacer des
de façon à ce que le code continue de s'exécuter en cas d'erreur.Code:
1
2 if(insert(/*retourne un rowcount()*/)){} else{}
edit: Lequel des codes suffirait à gérer l'exception tout en voulant faire ce que je souhaite, à savoir:
-inserer dans une table,
-Si insertion ok: updater cette dernière ainsi qu'une autre (partage de clé), si Exception -> message.
-Si ok mais un des update échoue aussi, alors on supprime le last inserted id de la première table et on affiche un message??
Merci à tous.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 try{ //insertion PDO dans la table1; if($table1->insert($args)){ $lastid=$db->lastInsertId(); if( !(table1->update($argspartagés) && table2->update($argspartagés))){ //CODE ERREUR2: erreur de l'update d'une(ou des deux) table 1/2 echo 'Une erreur différente s\'est produite'; } } } catch(Exception $e){ //CODE ERREUR1: Une erreur s'est produite echo 'Une erreur s\'est produite'; }