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

    Se prevedo autocommit non esegue INSERT

    Buon giorno a tutti.
    Di seguito una semplicissima funzione per l'INSERT
    Codice PHP:
    public function send_operator($n,$co,$c,$m,$e){
    //mysqli_autocommit($this->connect, false);// se prevedo autocommit non esegue INSERT
    mysqli_set_charset($this->connect,"utf8");
    $query     $this->connect->query("INSERT INTO ".TB_OPERATORI." ( "               ."nome,cognome,tipologia,citta,mobile,email"."  ) 
    VALUES ("
    ."\"".$n."\""
    .", \"".$co."\""
    .", \"dog-sitter-dog-walker\""
    .", \"".$c."\""
    .", \"".$m."\""
    .", \"".$e."\""
    ."  )") or die ("Errore");        
    if (
    $query === false) {            
    mysqli_rollback($this->connect);            
    return 
    false;        
    }        
    else{            
    return 
    true;        
    }        
    mysqli_free_result($query);

    In altre funzioni uguali però funziona.
    Perchè?
    Potete spiegarmene il motivo?
    Grazie mille.
    Ultima modifica di ANTAGONIA; 03-08-2018 a 12:46

  2. #2
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Se metti a off l'autocommit, devi poi esplicitamente fare mysqli_commit(), quando tutto è andato ok, altrimenti non vengono effettuate le modifiche. Tra l'altro non capisco l'utilità di usare le transazioni in questo caso
    Ultima modifica di boots; 03-08-2018 a 16:16

  3. #3
    quindi prevedere:
    Codice PHP:
    //mysqli_autocommit($this->connect, true);

    oppure

    // mysqli_autocommit($this->connect, false); 
    Non ha senso?

    Tu come avresti fatto?
    Grazie.

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Le transazioni si usano quando hai diverse query insert e/o update ed è necessario che TUTTE vadano a buon fine perché i dati sul DB siano coerenti.
    Se devi eseguire query singole non ha senso la transazione perché se la query fallisce, nel DB non avviene alcun cambiamento, dunque anche un rollback non è necessario, basta gestire l'errore in modo che ti venga proposto un messaggio che te lo notifica, così da sapere che la query non è stata eseguita.

  5. #5
    Perfetto.
    Grazie mille.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.