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 validée sans "commit" [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 106
    Par défaut Transaction validée sans "commit"
    Bonjour je rencontre un soucis dans ma programmation

    je fais un code avec une série de requêtes utilisant PDO puis après chaque exécution de requête je la teste,si elle est false, je lance une exception.

    Quand j'execute les requetes si le programme ne rencontre pas de "$result=$dbf->commit();" rien ne s'inscrit dans la BDD jusque la c normal.

    Par contre lorsque j'exécute la dernière requête, meme si elle ne rencontre pas de $result=$dbf->commit();" les inscriptions dans la BDD par les autres requêtes sont réalisées. (même si je met un die avant le commit comme dans mon bout de code)

    Comment une validation de transaction est possible sans commit?

    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
     
    try{
     
    //........ requêtes d'inscription dans la BDD
     
     
    // dernière requête
     
    $query="DROP DATABASE IF EXISTS DB_".$iddef['id_member'].";";
    $result=$dbf->prepare($query);
    $resultat2=$result->execute();
    if (!$resultat2) // dans le cas présent c'est true
    throw new exception();
    die();
    $result=$dbf->commit();
     
    }catch(exception $e){
    $result=$dbf->rollback();
    die();
    }
    Merci de votre aide (si je me suis bien fais comprendre).


  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 670
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 670
    Par défaut
    est ce que tu démarres bien la transaction avant d'exécuter la requête ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 106
    Par défaut oui !
    Au début de mon script j'ai bien ceci:

    $dbf->beginTransaction();

    Merci.


  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Un DROP DATABASE (entre autres) a pour effet de valider implicitement la transaction courante.

    Liens : fr/en.

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

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