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%)
-----


Kajam się i proszę o wybaczenie.
Dokładnie 6 godzin zajęło mi odnalezienie rozwiązania.

Mianowicie jakiś ekspert położył tabelę w my_isami :/

Po zmianie na inno_db oczywiście ruszyło.


Cytat(omeck @ 7.07.2009, 16:48:44 ) *
Czy możliwa jest zamiana punktu 2 z 3? najpierw wysyłać maila, a potem jeśli się udało wykonać operacje na bazie?
Może taki mały hack - skoro wylapaleś błąd w php, to wykonaj celowo jakieś zle zapytanie SQL - transakcja powinna to przechwycić i rollback powinien zadziałać


Myślałem, powiedz czy dobrym rozwiązaniem jest dostać e-mail, z hasłem które nie działa ^^



Ale rozwiązaliśmy problem:

Bo ruszyło, a ten kod który mam u góry jest poprawny.
Nie działało, bo facet położył tabelę w my_isami.
Wiesz, nie wpadło by mi do głowy żeby to sprawdzić.

Teraz ruszyło.


Działający example:

  1. <?php
  2. //Dodaje do serwera
  3. $dbh->beginTransaction();
  4. //$wynik=
  5. $dbh->exec("INSERT INTO root_passwords_node1 (ip,password,security_code,username) VALUES ('$ip','$passwordhashed','$key','$userlogin')");
  6.  
  7. //Dodaje do serwera
  8. ?>


Tutaj mamy kod który generuje błąd.

  1. <?php
  2. if(!$mail->Send()) {
  3.    //Mail NIE wysłany
  4. //COFAM MYSQL
  5. $dbh->rollBack();
  6. //COFAM MYSQL
  7. echo "Awaria w wysyłce poczty, prawdopodobnie klaster jest offline. Spróbuj za 5 minut.";
  8.  
  9. //echo $mail->ErrorInfo."<br>";
  10.  
  11. exit();
  12. }else
  13. {
  14. //Mail wysłany !
  15. $dbh->commit();
  16. //Mail wysłany !
  17. }
  18. ?>
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: 26.12.2025 - 13:19