Brug af transactions
betyder understøttelse af databaser til at indsætte data sikkert. Så i Codeigniter skriver vi alle databaserelaterede funktioner i modellen ikke i Controller. . Og i din anden kode (som ikke virker) har du peget model på der.(utils
). Så simpelt, jeg er sikker på, at dette ikke vil virke. Fordi det ikke er et indsæt data med model og controller parallel. Transaktionen skal kodes i modellen (Jeg vil skrive i model i mit svar ).
Indlæs også disse ting
- Databasebibliotek
- Modelklasse
- URL-hjælper
- Session
Antagelser
I din kode har du brugt $data
og $test
som array. Så jeg antager, at der er to array til at indsætte og opdatere data.
Dine datasæt
$data = array(
'title' => 'My title' ,
'name' => 'My Name' ,
'date' => 'My date'
);
$id = 007;
$test = array(
'title' => $title,
'name' => $name,
'date' => $date
);
Din kode
$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;
}
Noter
- Som standard kører Codeigniter alle transaktioner i streng tilstand. Nårstreng tilstand er aktiveret , hvis du kører flere grupper af transaktioner, vil alle grupper blive rullet tilbage, hvis en gruppe mislykkes. Ifstrict-tilstand er deaktiveret , hver gruppe behandles uafhængigt , hvilket betyder, at en gruppes fiasko ikke vil påvirke andre .