Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sprawdzenie wykonania transakcji
Forum PHP.pl > Forum > Bazy danych > MySQL
pitbull82
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
mike
  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.
pitbull82
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?
mike
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ę.
phpion
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/
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.