Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Sprawdzenie wykonania transakcji
pitbull82
post
Post #1





Grupa: Zarejestrowani
Postów: 167
Pomógł: 0
Dołączył: 30.04.2004
Skąd: Częstochowa

Ostrzeżenie: (0%)
-----


Witam

Czy istnieje jakiś prosty sposób na sprawdzenie transakcji za pomocą PHP + MySQL? Załóżmy że w transakcji dodaję do 2 różnych tabel po 1 rekordzie. Po commitowaniu transakcji chciałbym wiedzieć czy transakcja się wykonała i mogę wtedy wyświetlić komunikat "ok" / podjąć dalsze działania czy też wystąpił problem który muszę obsłużyć. Oczywiście wystarczy selectem sprawdzić czy w tabeli dane zostały umieszczone, ale czy nie ma prostszego rozwiązania?

Pozdrawiam


--------------------
Go to the top of the page
+Quote Post
mike
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

Ostrzeżenie: (0%)
-----


  1. <?php
  2.  
  3. try {
  4. $pdo->beginTransaction();
  5. // ...
  6. $pdo->commit();
  7. } catch (Exception $e) {
  8. $pdo->rollBack();
  9. echo "Failed: " . $e->getMessage();
  10. }
  11.  
  12. ?>

Jeśli wyjątek nie poleci to transakcja przeszła bez zarzutu.

Ten post edytował mike 18.11.2010, 14:00:24
Go to the top of the page
+Quote Post
pitbull82
post
Post #3





Grupa: Zarejestrowani
Postów: 167
Pomógł: 0
Dołączył: 30.04.2004
Skąd: Częstochowa

Ostrzeżenie: (0%)
-----


Dzięki. Pytanie w którym miejscu w tym przykładzie powinien znaleźć się commit i czy rollback na pewno jest potrzebny po złapaniu wyjątku jeśli transakcja się nie powiodła, no chyba że w tym przykładzie jest założone sprawdzanie wyjątku po każdej transakcji.

Da radę analogicznie zrobić bez PDO?


--------------------
Go to the top of the page
+Quote Post
mike
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

Ostrzeżenie: (0%)
-----


Cytat(pitbull82 @ 18.11.2010, 13:48:46 ) *
Dzięki. Pytanie w którym miejscu w tym przykładzie powinien znaleźć się commit i czy rollback na pewno jest potrzebny po złapaniu wyjątku jeśli transakcja się nie powiodła, (...)

1. Zmieniłem posta wyżej wstawiając commit() w odpowiednim miejscu.
2. Tak. Rollback() na pewno jest w dobrym miejscu. A przykład dotyczy operacji zamkniętych w jedną transakcję.

Ten post edytował mike 18.11.2010, 14:04:18
Go to the top of the page
+Quote Post
phpion
post
Post #5





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Cytat(pitbull82 @ 18.11.2010, 13:48:46 ) *
Da radę analogicznie zrobić bez PDO?

Tyle lat na forum i nie jesteś w stanie tego samodzielnie znaleźć? Odpowiednie pytanie do Google (php mysql transaction) i masz odpowiedź, np.:
http://www.devarticles.com/c/a/MySQL/Using...QL-4.0-and-PHP/
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 09:21