Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505

    Eseguire una semplpice transazione

    Mi trovo a dover modificare 2 tabelle e l'aggiornamento deve essere effettivamente apportato solo se entrambe saranno correttamente modificate, quindi ho bisogno di una transazione.
    Il problema è che è la prima volta che mi capita in PHP e non so come realizzarla.
    Le tabelle sono già su engine InnoDB.

    Come si traduce questa cosa?
    Codice PHP:
    inizia la transazione
    mysql_query
    ("UPDATE tabella1 SET campo1='valore1' WHERE campo2='valore2'");
    mysql_query("UPDATE tabella2 SET campo1='valore1' WHERE campo3='valore3'");
    if(
    tutto ok)
       
    commit;
    else
       
    rollback

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Nessuno sa come si implementa una transazione in php su db mysql?

  3. #3
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230

    Re: Eseguire una semplpice transazione

    Codice PHP:
    mysql_query("BEGIN");
    mysql_query("UPDATE tabella1 SET campo1='valore1' WHERE campo2='valore2'");
    $bla=mysql_affected_rows();//o qualsiasi altro codice che ti restituisca un feedback sulla query in base alle tue aspettative
    mysql_query("UPDATE tabella2 SET campo1='valore1' WHERE campo3='valore3'");
    $bla1=mysql_affected_rows();
    if(
    bla && $bla1 0)//o qualsiasi altro confronto che per te significhi operazione riuscita
       
    mysql_query("COMMIT");
    else
       
    mysql_query("ROLLBACK"); 

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

  5. #5
    Bastava fare un

    Codice PHP:
    if(mysql_query("UPDATE tabella1 SET campo1='valore1' WHERE campo2='valore2'") && mysql_query("UPDATE tabella2 SET campo1='valore1' WHERE campo3='valore3'") )
    {
       
    commit;
    }
    else
    {
       
    rollback;


  6. #6
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    Originariamente inviato da Samleo
    Bastava fare un

    Codice PHP:
    if(mysql_query("UPDATE tabella1 SET campo1='valore1' WHERE campo2='valore2'") && mysql_query("UPDATE tabella2 SET campo1='valore1' WHERE campo3='valore3'") )
    {
       
    commit;
    }
    else
    {
       
    rollback;

    e se il criterio di riuscita non fosse la correttezza sintattica della query ma l'effettivo aggiornamento?

  7. #7
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    [edit].. messaggio duplicato sbagliato

  8. #8
    In quel modo, verifichi la corretta esecuzione delle query, mica se sono scritte giuste

  9. #9
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    D'accordo, faccio la domanda con altre parole: se tu volessi verificare che entrambe le query abbiano effettivamente aggiornato il record di riferimento? Ad esempio che si sia verificata la condizione WHERE campo2='valore2', e quindi ci sia stato un update?

  10. #10
    Ho sempre usato quel metodo, e il risultato è stato sempre quello desiderato.

    Non vedo perchè complicarsi la vita

    Poi ovvio, ognuno ha il suo metodo

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.