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 :

utilisation des transactions pour des insert et/ou des update avec pdo [PDO]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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 utilisation des transactions pour des insert et/ou des update avec pdo
    Bonsoir,

    voici le principe tel que je l'ai compris :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    //on suppose que la connexion est établie et que $dbh est une instance pdo
    try {
        $dbh->startTransaction();
        $sql = "INSERT....";
        $dbh->query($sql);
        $dbh->commit();
    }
     catch (\Exception $e) {
        $dbh->rollback();
    }

    Si on a plusieurs requêtes à effectuer mais qu'on veut soit toutes les exécuter, soit tout annuler, alors peut-on faire ça ?
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    //on suppose que la connexion est établie et que $dbh est une instance pdo
    try {
        $dbh->startTransaction();
        $sql1 = "INSERT....";
        $dbh->query($sql1);
        $sql2 = "INSERT....";
        $dbh->query($sql2);
        $dbh->commit();  // seulement un unique commit à la fin
    }
     catch (\Exception $e) {
        $dbh->rollback();
    }

  2. #2
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 322
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 322
    Billets dans le blog
    17
    Par défaut
    Oui, tu peux tester en faisant une requête $sql2 volontairement erronée => Le INSERT de $sql1 ne sera pas en base

    La doc PDO sur les transactions : https://www.php.net/manual/fr/pdo.transactions.php

  3. #3
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 986
    Par défaut
    Oui c'est bien ça (c'est d'ailleurs pratiquement l'exemple du manuel PHP). C'est tout ou rien.

  4. #4
    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
    @séb1 : en fait, j'ai fait des essais et au début, gêné par des FK, j'étais tout le temps dans le cas rollback !

    Citation Envoyé par CosmoKnacki Voir le message
    (c'est d'ailleurs pratiquement l'exemple du manuel PHP).
    le nom de la variable $dbh, je l'ai utilisé après avoir fait une recherche.
    Le try/catch, j'ai repris le code que proposait rawsrc pour sa classe PDOPlusPlus (que j'adore ; dès qu'il faut gérer une bdd, je l'utilise).

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 03/07/2021, 20h27
  2. [JMS] Utilisation des "queue" avec JMS
    Par be_tnt dans le forum Java EE
    Réponses: 1
    Dernier message: 01/11/2006, 16h05
  3. [JTABLE] Peut-on utiliser des autoFilters avec une JTable
    Par Nico+10) dans le forum Composants
    Réponses: 3
    Dernier message: 18/09/2006, 19h53
  4. Utilisation des paramètres avec rowsource - 97 et 2003
    Par IntenseM3 dans le forum Access
    Réponses: 1
    Dernier message: 10/05/2006, 09h18
  5. Utiliser des webservices avec nusoap
    Par budiste dans le forum XML/XSL et SOAP
    Réponses: 6
    Dernier message: 30/03/2006, 11h56

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