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'); } |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 80 Pomógł: 0 Dołączył: 27.05.2009 Ostrzeżenie: (0%)
|
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. |
|
|
|
ahold Rolback w zapytaniu SQL ? 1.07.2009, 16:19:43
Robert007 jeżeli wstawiasz zmienne w zapytaniu to musisz rob... 1.07.2009, 16:24:37
ahold Kod<?php
$dbh->beginTransaction... 1.07.2009, 16:36:17
erix A nie mogłeś sprawdzić? 1.07.2009, 16:41:38
ahold Pytam, czy dobrze kombinuje.
Mój pierwszy pomysł,... 1.07.2009, 16:45:34
fander Aby użyć rollback najpierw musisz rozpocząć transa... 2.07.2009, 12:09:07
viking Powiedzcie mi czemu ludzie nie raczą nigdy za... 2.07.2009, 12:18:47 
omeck Cytat(viking @ 2.07.2009, 13:18:47 ) ... 7.07.2009, 14:27:04
fander masz racje 2.07.2009, 12:55:10
ahold Niestety, nie mogę dojść do tego.
Korzystam z PDO.... 7.07.2009, 12:35:58 
omeck Cytat(ahold @ 7.07.2009, 16:18:20 ) 1... 7.07.2009, 15:48:44
ahold Kajam się i proszę o wybaczenie.
Dokładnie 6 godzi... 7.07.2009, 15:55:33
fander Przecież właśnie zamieniłe... 7.07.2009, 17:57:44
ahold Wykonałem commit zapytania które się udało wykonać... 8.07.2009, 08:32:58 ![]() ![]() |
|
Aktualny czas: 27.12.2025 - 10:17 |