Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Codeigniter-Transaktionen

Verwenden von transactions bedeutet Unterstützungsdatenbanken, um Daten sicher einzufügen. Also schreiben wir in Codeigniter alle datenbankbezogenen Funktionen in das Modell nicht im Controller. . Und in Ihrem zweiten Code (der nicht funktioniert) haben Sie auf das Modell verwiesen (utils ). So einfach bin ich mir sicher, dass das nicht funktionieren wird. Weil es keine Einfügedaten mit Modell und Controller parallel sind. Die Transaktion sollte im Modell kodiert werden (Ich werde in meiner Antwort in das Modell schreiben ).

Diese Sachen auch laden

  1. Datenbankbibliothek
  2. Modellklasse
  3. URL-Helfer
  4. Sitzung

Annahmen

In Ihrem Code haben Sie $data verwendet und $test als Array. Ich gehe also davon aus, dass es zwei Arrays zum Einfügen und Aktualisieren von Daten gibt.

Ihre Datensätze

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

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

Ihr Code

$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;
}

Notizen

  1. Standardmäßig führt Codeigniter alle Transaktionen im strikten Modus aus. Wenn der strikte Modus aktiviert ist , wenn Sie mehrere Gruppen von Transaktionen ausführen, werden alle Gruppen zurückgesetzt, wenn eine Gruppe fehlschlägt. Der strikte Modus ist deaktiviert wird jede Gruppe unabhängig behandelt , was bedeutet, dass ein Ausfall einer Gruppe keine Auswirkungen auf andere hat .