Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    1,085

    Sql rollback non funziona

    Ciao,
    non riesco a capire come mai non mi funzioni più il 'rollback' .. qualcuno mi sa consigliare ?
    Grazie mille

    codice:
    // --> start transaction
    $query = "START TRANSACTION"; 
    if (!mysql_query($query, $db))                                                    
       {
     	  $esito = 'KO' ;                                                                                                    
     	  $err = "Start Transaction KO: " .	mysql_error() . " - " . mysql_errno(); 
     	  goto end;                                  
       }
    
    
    $sysdata = @date('Y-m-d H:i:s');
    $id_scad = $_COOKIE['id_scad'];
    
    
    
    
    // --> update
    
    
    $query = "UPDATE scadenze 
              SET 
                 data_scadenza 	         =  '$data_scadenza_new'        ,    
                 importo                 =  '$importo_new'              ,
                 imp_pag_netto           =  '$imp_pag_netto_new'        ,
                 importo_avviso          =  '$importo_avviso_new'       ,
                 flg_importo_avviso      =  '$flg_importo_avviso_new'   ,
                 note                    =  '$note_new'                 ,
                 produttore              =  '$produttore_new'           ,
                 flg_no_provigione       =  '$flg_no_provigione_new'    ,
                 flg_forz_provigione     =  '$flg_forz_provigione_new'  ,
                 perc_prov_forzata       =  '$perc_prov_forzata_new'    ,
                 flg_forz_prov_rca       =  '$flg_forz_prov_rca_new'    ,
                 flg_forz_prov_ard       =  '$flg_forz_prov_ard_new'    ,
                 flg_forz_prov_re        =  '$flg_forz_prov_re_new'     ,    
                 diritti                 =  '$diritti_new'              ,   
                 ts_agg_scad             =  '$sysdata'                  ,
                 user_scad               =  '$user'
                              
              WHERE id_scad = $id_scad  "; 
    
    
    //echo "query  -------->  " . $query . "<br>";
    
    
    if (!mysql_query($query, $db))                                                              
       {
     	  $esito = 'KO' ; 
        if (mysql_errno() == '1064')                     
           {$err = "Usato caratteri non ammessi !!";}    
        else                                             
           {$err = "Errore durante UPADATE tab. scadenze: " .	mysql_error() . " - " . mysql_errno(); }
     	  goto end;                                  
       }
    
    
    
    
    
    
    // ========================================================================================
    
    
    end:
    $esito = 'KO';
    
    
    //echo "esito  -------->  " . $esito . "<br>";
    //echo "errore -------->  " . $err . "<br>";
    
    
    // --> gestione errori di sistema
    if ($flg_error_glob == 'S')
       {
       	$esito = 'KO';
       	$err = $err_descr_glob;
       }
    
    
    setcookie('esito_elab', $esito);
    setcookie('errore', $err); 
    setcookie('provenienza', 'scadenze_agg_exe');
    
    
    if ($esito == 'OK')
       {
        $query = "COMMIT"; 
        //$query = "ROLLBACK"; 
        if (!mysql_query($query, $db))                                                     
           {
            $err = "Commit KO: " .	mysql_error() . " - " . mysql_errno(); 
       	    setcookie('esito_elab', $esito);
            setcookie('errore', $err); 
       	    setcookie('pos_cursore', $pos_cursore);                
            header ( "Location: scadenze_agg.php");   
            exit;                                                  
           } 
        delete_cookie();   
        header ( "Location: scadenze_lista.php"); 
        exit;
       }
    else
       {
        $query = "ROLLBACK";                                                                 	
        if (!mysql_query($query, $db))                                                     	
           {$err = "ROLLBACK KO: " .	mysql_error() . " - " . mysql_errno(); } 
           
        setcookie('esito_elab', $esito);
        setcookie('errore', $err);   
        setcookie('pos_cursore', $pos_cursore);
        header ( "Location: scadenze_agg.php"); 
        exit;
       }

  2. #2
    Potresti avere l'autocommit impostato a true.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    1,085
    ma è un parametro che dovrei aver impostato io da qualche parte ?
    se è così non mi risulta

  4. #4
    Non sono sicuro di quale sia la configurazione di default, ma potrebbe essere impostato a true. E' una configurazione di MySQL che dovrebbe trovarsi nel my.cnf
    Altrimenti puoi modificarla direttamente da PHP come descritto nel link che ti ho postato.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  5. #5
    $mysqli->autocommit(FALSE);
    $mysqli->query("...'");
    $mysqli->query("'...");
    $mysqli->query("...'");
    $mysqli->query("...");
    if($mysqli->commit()){
    echo 1;
    }

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    1,085
    chiedo scusa ma sono un autodidatta del week end ..
    mi da il seguente errore:

    Fatal error: Call to a member function autocommit() on a non-object in C:\Documents ..

    codice:
    $db = mysql_connect($db_host, $db_user,$db_password) ;  
    
    
    $db->autocommit(FALSE);

  7. #7
    Il metodo autocommit() è disponibile solo se utilizzi mysqli. Se utilizzi l'estensione mysql (che tra l'altro è deprecata) devi eseguire una query che imposti l'autocommit.

    Codice PHP:
    ...
    $db mysql_connect($db_host$db_user,$db_password);
    $query "SET autocommit=0";
    mysql_query($query$db);
    ... 
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    1,085
    Niente ..
    la tabella continua ad essere aggiornata !! :-(
    Del resto una volta mi funzionava, non ho idea di cosa possa essere successo.
    Ma quale sarebbe il motivo per cui usare l'estensione mysql è deprecata ?
    Grazie

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    1,085
    Ciao,
    ma il problema potrebbe essere la definizione della tabella ?
    Mi sa che con una tabella funziona tutto correttamente, con un'altra niente.
    Cosa devo verificare ?
    Grazie

  10. #10
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    1,085
    nessuno !? :-(

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.