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

Requêtes MySQL Discussion :

gestion des erreurs dans une transaction mysql


Sujet :

Requêtes MySQL

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Décembre 2010
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 2
    Points : 1
    Points
    1
    Par défaut gestion des erreurs dans une transaction mysql
    J'ai créé une transaction comprenant plusieurs requêtes de mise à jour de différentes tables.
    A la fin de la transaction si aucune erreur n'est détectée, je valide la transaction, ou invalide dans le cas inverse.
    Pour se faire, une variable en début de transaction et à chaque requête je teste et positionne ma variable à faux si une erreur est détectée.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (mysql_error() != null)  {$valid_transaction = false;	}
    J'ai volontairement inséré une anomalie dans une requête pour test.
    Surprise mysql_error() retourne null, l'erreur n'est pas détectée. J'ai lu sur un autre forum qu'à l'intérieur d'une transaction mysql_error est inhibé. Quelqu'un a t il une idée ?
    Merci

  2. #2
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    Moi, je serais toi, je m'appuierai sur un mécanisme d'exception en php et pas des conditions. Comme ça, tu contrôles que tu as des résultats qui ont une forme acceptable et sinon ... je dirais que ça marche vachement bien.

    Ensuite, en php, on ne compare pas à null avec ce signe égal là, on le fait avec l'autre signe égal. le vrai.
    PHP fait nativement la validation d'adresse électronique .
    Celui qui a inventé mysql_connect(...) or die() est déjà mort plusieurs fois.

    Utilisez le bouton résolu!

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Décembre 2010
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    J'ai dû mal m'exprimer.
    Il ne s'agit pas d'un problème php, mais d'un problème mysql qui semble ne pas détecter ou plutôt ne pas renvoyer de message d'erreur lorsqu'une requête se plante, ce qui est gênant dans une transaction.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 38
    Points : 41
    Points
    41
    Par défaut
    ci-joint le code pour gérer les transactions pour une table innodb
    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
    21
    22
    23
    24
    25
    26
    27
    28
     
    <?php
    // connect TO DATABASE
    $dbh = mysqli_connect($host, $user, $pass, $db);
     
    // turn off auto-commit
    mysqli_autocommit($dbh, FALSE);
     
    // run query 1
    $result = mysqli_query($dbh, $query1);
    IF ($result !== TRUE) {
        mysqli_rollback($dbh);  // IF error, roll back transaction
    }
     
    // run query 2
    $result = mysqli_query($dbh, $query2);
    IF ($result !== TRUE) {
        mysqli_rollback($dbh);  // IF error, roll back transaction
    }
     
    // AND so ON...
     
    // assuming no errors, commit transaction
    mysqli_commit($dbh);
     
    // close connection
    mysqli_close($dbh);
    ?>
    sinon si tu veux toujours garder ton code :
    essaye cà :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    mysql_query("SELECT * FROM nonexistenttable", $link);
    echo mysql_error($link) ;

Discussions similaires

  1. [DATA] Gestion des erreurs dans une étape DATA
    Par JeromeMATHIAS dans le forum SAS Base
    Réponses: 12
    Dernier message: 01/02/2012, 23h50
  2. Gestion des erreurs dans une boucle While
    Par Gregory.M dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 12/08/2008, 20h57
  3. Gestion des erreurs dans une requête "IF"
    Par tineighty dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 08/10/2007, 18h22
  4. Gestion des erreurs dans une classe
    Par gregb34 dans le forum ASP.NET
    Réponses: 10
    Dernier message: 26/07/2007, 09h59
  5. [VB6] Gestion des erreurs dans une dll
    Par zimba-tm dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 02/08/2004, 11h20

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