sql >> Databasteknik >  >> RDS >> Mysql

Codeigniter-transaktioner

Använda transactions innebär att stödja databaser för att infoga data säkert. Så i Codeigniter skriver vi alla databasrelaterade funktioner i modellen inte i Controller. . Och i din andra kod (som inte fungerar) har du pekat på modellen där.(utils ). Så enkelt att jag är säker på att detta inte kommer att fungera. Eftersom det inte är en infogningsdata med modell och styrenhet parallell. Transaktionen ska kodas i modellen (Jag kommer att skriva i modellen i mitt svar ).

Ladda även in det här

  1. Databasbibliotek
  2. Modellklass
  3. Webbadresshjälp
  4. Session

Antaganden

I din kod har du använt $data och $test som array. Så jag antar att det finns två arrayer för att infoga och uppdatera data.

Dina datamängder

$data = array(
   'title' => 'My title' ,
   'name' => 'My Name' ,
   'date' => 'My date'
);

$id = 007;
$test = array(
   'title' => $title,
   'name' => $name,
   'date' => $date
);

Din kod

$this->db->trans_start(); # Starting Transaction
$this->db->trans_strict(FALSE); # See Note 01. If you wish can remove as well 

$this->db->insert('table_name', $data); # Inserting data

# Updating data
$this->db->where('id', $id);
$this->db->update('table_name', $test); 

$this->db->trans_complete(); # Completing transaction

/*Optional*/

if ($this->db->trans_status() === FALSE) {
    # Something went wrong.
    $this->db->trans_rollback();
    return FALSE;
} 
else {
    # Everything is Perfect. 
    # Committing data to the database.
    $this->db->trans_commit();
    return TRUE;
}

Anteckningar

  1. Som standard kör Codeigniter alla transaktioner i strikt läge. Närstrikt läge är aktiverat , om du kör flera grupper av transaktioner, om en grupp misslyckas kommer alla grupper att återställas. Ifstrict-läget är inaktiverat , varje grupp behandlas oberoende , vilket betyder att ett misslyckande för en grupp inte kommer att påverka någon annan .


  1. Hur man automatiserar Galera Cluster med ClusterControl CLI

  2. PL/SQL-bulksamla med LIMIT-klausul i Oracle-databasen

  3. SQL Server 2012 Service Pack 1 och kumulativ uppdatering 1

  4. Oracle SQL-fråga:Hämta senaste värden per grupp baserat på tid