commit

ciao

di php so pochissimo ho uno script a cui passo un file contente una serie di query

..........

.........

//divido le linee grandi in piccole linee */

   $queries = explode('/fine', $scriptfile);

   //eseguo ogni linea come una query

   foreach($queries as $query)

   {

      $query = trim($query);

      if($query == "") { continue; }

      if(!mysql_query($query))

      {

         $errmsg = "query ".$query." failed";

         return false;

      }

   }

   // Tutto ok!!

   return true;

}

volevo inserire un commit ma non ho ben capito come fare

mi potreste dare una mano per cortesia

grazie

ciao

ilario

inviato 6 anni fa
ilario
X 0 X

Cosa intendi per commit?

Cosa vuoi fare con tale script?

P.S. per tutti gli utenti del forum: siate precisi e completi nel fare le vostre domande.

risposto 6 anni fa
Mario Santagiuliana
X 0 X

ciao scusa se non sono stato preciso

<Cosa intendi per commit?

mysql_query("START TRANSACTION");

if(mysql_query($myquery))  

mysql_query("COMMIT");

else  

mysql_query("ROLLBACK)

in modo tale che se ci sia un errore mi riporta il db al punto di partenza

<Cosa vuoi fare con tale script?

semplicemente il codice che  ho postato prima (è solo una parte)  legge da un file di testo(sql) un'insieme di righe e le divide in singole istruzioni sql (inser update e delete) che passo al dbmysql  e fin qui funziona tutto

ora vorrei inserire una procedura nel caso in cui ci sia un errore,

avevo pensato a due soluzioni

una è inserire appunto un commit ROLLBACK e ripassare tutto il file successivamente

oppure 2 soluzione un pò più complicata ma penso sia migliore

se l'istruzione passata è true la inserisco in un array , alla fine del ciclo o quando avviene un'errore, confronto l'array con il mio file e controllo in caso di errore che istruzioni mancano ancora da eseguire, facendo appunto la differenza tra il file e l'array

spero di essermi riuscito a spiegare

ciao Ilario

risposto 6 anni fa
ilario
X 0 X

Ok, adesso è più chiaro. La logica e lo script che hai suggerito è corretto.

Potresti anche fare così: esegui le varie query e quelle che funzionano le inserisci in un file apposito con le query funzionanti, quelle che non vanno le inserisci in un file da correggere. Fai il ROLLBACK ed esegui il file con le query che sono a posto.

Correggi dunque quelle che non vanno ed esegui di nuovo lo script.

Credo tu riesca a farlo senza troppi problemi :)

risposto 6 anni fa
Mario Santagiuliana
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda