Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Commit e Rollback - chiarimenti su utilizzo in php

    Ciao a tutti... volevo se possibile chiarirmi le idee sull'uso di commit/rollback con php.

    Se non ho capito male.

    SCOPO: serve per fare magari una serie di insert/update/delete... che devono essere fatti tutti assieme... insomma per evitare che magari ne fa metà e poi va in errore.. e ti ritrovi le tabelle con dati non corretti.

    USO:
    - si parte con start transaction o begin? cambia qualcosa?
    - il commit e il rollback praticamente devo farglieli fare io, controllando con un if se le query sono state tutte eseguite?
    - nel caso di rollback, è possibile capire dove è stato generato l'errore?

    codice:
    <?php
    $START_TRANSACTION = "START TRANSACTION";
    $COMMIT = "COMMIT";
    $ROLLBACK = "ROLLBACK";
    
    //inizio le operazioni atomiche
    $mysqli->query($START_TRANSACTION);
    
    $queryresult5 = $mysqli->query("query5");
    $queryresult6 = $mysqli->query("query6");
    $queryresult7 = $mysqli->query("query7");
    
    //finisco le operazioni atomiche
    if ($queryresult5 && $queryresult6 && $queryresult7) {
    $mysqli->query($COMMIT);
    echo "Ok fatto tutto";
    }
    else {
    $mysqli->query($ROLLBACK);
    echo "Errore";
    }

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505

    Re: Commit e Rollback - chiarimenti su utilizzo in php

    Originariamente inviato da Pandax
    - si parte con start transaction o begin? cambia qualcosa?
    Fa lo stesso
    - il commit e il rollback praticamente devo farglieli fare io, controllando con un if se le query sono state tutte eseguite?
    esattamente
    - nel caso di rollback, è possibile capire dove è stato generato l'errore?
    Controlli dopo ogni query se ha dato errore, in tal caso ti salvi in qualche variabile la query o quello che vuoi che ti permetta di capire dove è stato l'errore

  3. #3

    Re: Re: Commit e Rollback - chiarimenti su utilizzo in php

    Originariamente inviato da Alhazred
    Controlli dopo ogni query se ha dato errore, in tal caso ti salvi in qualche variabile la query o quello che vuoi che ti permetta di capire dove è stato l'errore
    mi faresti un esempio al volo di come fare il controllo e salvarlo nella variabile?
    Non capisco bene che intendi...

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Per esempio
    Codice PHP:
    $errori = array();

    $query1 "bla bla bla";
    if(!
    mysql_query($query1))
    {
        
    $errori[] = array('query' => $query1'errore' => mysql_error());
    }

    $query2 "bla bla bla";
    if(!
    mysql_query($query2))
    {
        
    $errori[] = array('query' => $query2'errore' => mysql_error());
    }
    //e così via 
    In questo modo scorrendo l'array $errori potrai recuperare sia la query che ha generato l'errore, sia il messaggio d'errore generato da mysql

    Ovviamente il codice andrà integrato nella logica della transazione, questo è un esempio di come salvarti gli errori.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.