Używam Codeigniter 2.1.4 i próbuje wdrożyć transakcję. Być może brakuje mi punktu transakcji, ale próbuję przesłać plik na mój serwer i utworzyć wpis bazy danych dla tego pliku. Jeśli wstawienie wiersza lub przesłanie pliku nie powiedzie się, chciałbym nie rób tego.
to jest sedno mojego kontrolera
najpierw otwórz transakcję
$this->db->trans_begin();
dodaj wpis z modelem
$fileId = $this->file_model->addFile("someinfo");
wykonaj przesyłanie plików
$upload = $this->upload->do_upload("file");
sprawdź, aby upewnić się, że oba minęły
//commit
if($fileId AND $upload){
$this->db->trans_commit();
}
//rollback
else{
$this->db->trans_rollback();
}
transakcje nie działają, a wpis bazy danych jest dodawany za każdym razem, niezależnie od tego, czy przesyłanie się nie powiedzie, czy nie.
teraz z poprzedniego czytania wydaje się, że transakcje należą do modelu, ale to nie działa dla mnie, ponieważ przesyłam plik.
myśli o tym, jak to wdrożyć?
Odpowiedzi:
1 dla odpowiedzi № 1Spróbuj tego:
$this->db->trans_start();
//Your code Here...
$this->db->trans_complete();
$trans_status = $this->db->trans_status();
if ($trans_status == FALSE) {
$this->db->trans_rollback();
} else {
$this->db->trans_commit();
}