Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Rolback w zapytaniu SQL ?
ahold
post
Post #1





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 27.05.2009

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


witajcie,


Męczę formularz rejestracyjny.
W jakis posób wydać komendę rolback korzystając z takiego przykładu


$wynik=$dbh->exec("INSERT INTO xxxx (xxxx, xx,xxxx) VALUES ('xxx','$xxx','$id_xxx')");

wysyłanie maila
{
//ok
}
else
//awaria
{
rolback kod u góry
print('Fail');
}
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
ahold
post
Post #2





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 27.05.2009

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


Cytat(omeck @ 7.07.2009, 15:27:04 ) *
Autorowi nie do końca o to chodzi.
W sumie dobre pytanie. Rollback jest wykonywany na wskutek przechwycenia wyjątku, który wyrzuca adapter, wskutek błędu, który wyrzuca baza... Nigdy w sumie nie miałem takiego problemu, aby cofać zmiany jeśli kod php jest nieprawidłowy - nie można go przebudować?



Dokładnie. Mi nie chodzi o doskonale opisaną metodę roolback w sytuacji kiedy jedna zapytanie na dwa, się nie powiedzie. Wtedy tam właśnie mamy przechwytywanie wyjątku, i roolback.

Mi chodzi o prostą sytuację.
Przykład

1) generuje użytkownikowi nowe hasło
2) dodaje do bazy danych
3) Wysyłam e-mail - zmieniłem Ci hasło

Nastąpiła awaria bo wewnętrzny serwer smtp poleciał. Tak więc e-mail nie został wysłany. Łapie mi to wyjątek w php, odpowiedni w bibliotece stwierdzający awarie serwera
if awaria {
Wiadomość nie może być wysłana, serwer smtp leży.
}

I teraz trzeba cofnąć te zmianę w serwerze mysql, ponieważ, zmieniliśmy hasło, ale nie dotrze ono do użytkownika.


Potrzebuję takie wywołanie
if awaria
{
cofnij ostatnie zapytania, które były np po "begin trans action "
}


Naprawdę długo szukałem tego na Google, i wszędzie przykłady dotyczyły przechwytywania, błędów w zapytaniach.
Czemu więc po prostu wywołanie roolback() nie odnosi sukcesu.


Jeżeli ma prawo reagować na błąd w mysql to czemu nie może też php wywołać procedury cofania.
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 27.12.2025 - 10:17