transactions
gebruiken betekent ondersteuning van databases om gegevens veilig in te voegen. Dus in Codeigniter schrijven we alle databasegerelateerde functies in het Model niet in Controller. . En in je tweede code (die niet werkt) heb je daar een model op gewezen. (utils
). Zo simpel dat ik zeker weet dat dit niet gaat werken. Omdat het geen gegevens invoegen met model en controller parallel. Transactie moet in het model worden gecodeerd (Ik zal in het model in mijn antwoord schrijven ).
Laad deze dingen ook
- Databasebibliotheek
- Modelklasse
- URL-helper
- Sessie
Aannames
In je code heb je $data
gebruikt en $test
als array. Dus ik neem aan dat er twee arrays zijn voor het invoegen en bijwerken van gegevens.
Uw datasets
$data = array(
'title' => 'My title' ,
'name' => 'My Name' ,
'date' => 'My date'
);
$id = 007;
$test = array(
'title' => $title,
'name' => $name,
'date' => $date
);
Uw 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;
}
Opmerkingen
- Standaard voert Codeigniter alle transacties uit in de strikte modus. Wanneerstrikte modus is ingeschakeld , als u meerdere groepen transacties uitvoert, worden alle groepen teruggedraaid als één groep faalt. Ifstrict-modus is uitgeschakeld , elke groep wordt onafhankelijk behandeld , wat betekent dat een mislukking van een groep geen gevolgen heeft voor andere .