IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

transaction et try-catch [PDO]


Sujet :

PHP & Base de données

  1. #1
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 493
    Billets dans le blog
    1
    Par défaut transaction et try-catch
    Bonjour,
    je viens de découvrir les transactions.
    Je m'interroge sur la bonne position de startTransaction. J'hésite entre
    code 1 :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $ppp->startTransaction();
    try {
    ...
    $ppp->commit();
    }
    catch (\Exception $e) {
                $ppp->rollback();
            }
    code 2 :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    try {
    $ppp->startTransaction();
    ...
    $ppp->commit();
    }
    catch (\Exception $e) {
                $ppp->rollback();
            }
    Le code 1 me paraît plus logique. Qu'en pensez-vous ?

  2. #2
    Membre Expert Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 895
    Par défaut
    Bonjour,

    Le second code me parait plus logique car la transaction fait partie du try-catch et non pas de l'instruction parent

    Je me suis quand même renseigné, et d'après la documentation PHP, il semblerait que ça soit bien à "l'intérieur" qu'il faut débuter la transaction
    https://www.php.net/manual/fr/pdo.tr...hp#example-968

  3. #3
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 493
    Billets dans le blog
    1
    Par défaut
    Merci pour le lien et en effet, même si on termine dans le catch(), on va démarrer l'exécution du try, donc démarrer la transaction...

  4. #4
    Membre Expert Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 895
    Par défaut
    Et tant que j'y suis, pour justifier un peu plus intelligemment que de bêtement balancer un lien, voici un petit exemple ^^

    Le scope s'étend du try jusqu'à la fin du catchOn peut donc écrire ceci :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    try {
        $t = "test";
        throw new Exception(":(");
    } catch (Exception $ex) {
        echo PHP_EOL . '<pre>$t: ' . print_r($t, true) . '</pre>' . PHP_EOL;
    }
    ?>

    Ce code affiche : $t: test

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. TRY CATCH imbriqués et TRANSACTION
    Par sebastien_m dans le forum Développement
    Réponses: 2
    Dernier message: 20/01/2017, 15h55
  2. [2008] TRY CATCH , La transaction actuelle ne peut pas être validée
    Par ricil78 dans le forum Développement
    Réponses: 2
    Dernier message: 14/09/2015, 09h35
  3. [PostgreSQL] try catch dans une transaction
    Par Cyanatide dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 18/10/2011, 11h56
  4. [try-catch] relancer les instruction du bloc try
    Par nounou dans le forum Langage
    Réponses: 11
    Dernier message: 12/05/2004, 11h23
  5. Exception & Try..catch
    Par PurL dans le forum C++Builder
    Réponses: 2
    Dernier message: 11/12/2002, 15h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo