Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    776

    PDO transazione non fa il rollback

    Ciao a tutti,

    sto facendo delle prove con le transazioni e, nonostante tutto, continua a scrivere nel db anche se faccio un rollback.
    In che cosa sbaglio?


    Data questa classe:
    Codice PHP:
    class Modelo_rc {
        private 
    $pdo;
        public function 
    __construct($host$db$user$pw) {        
          
    $this->startConnection($host$db$user$pw);  
        }
        public function 
    setRc($uniqueUserCode) {       
          
    $sql "INSERT INTO tb_user (uniqueUserCode) VALUES (?)";        
          
    $array = [$uniqueUserCode];        
          
    $this->insert($sql$array);       
          if (
    FALSE) {
            
    //in questo punto forzo sempre il rollback, ma comunque mi scrive il record nel DB                    
            
    $this->pdo->commit();        
          } else {            
            
    var_dump($this->pdo->rollBack());   
           }   
       }
        private function 
    startConnection($host$db$user$pw) {       
            if (!
    $this->pdo) {           
          try {                              
            
    $this->pdo = new PDO("mysql:host=" $host ";dbname=" $db ";charset=utf8"$user$pw); 
              
    $this->pdo->beginTransaction();               
              return 
    $this->pdo;            
           } catch (
    Exception $e) {                
             
    Errores::set(__CLASS____FUNCTION__"Db_2 Error: " $e);            
           }        
           } else {            
            return 
    $this->pdo;        
          }    
        }
        private function 
    insert($sql$array) {
            
    $stmt $this->pdo->prepare($sql);        
            
    $stmt->execute($array);    
    }

    Ultima modifica di robynosse; 06-08-2020 a 12:34

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    776
    Ho trovato il problema:
    La tabella era MyIsam e non InnoDb come richiedono le transazioni.
    Ho convertito la tabella in questione e ha funzionato.
    ...non produceva alcun errore.

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.