Autor | Zpráva | ||
---|---|---|---|
Ben Profil * |
#1 · Zasláno: 20. 9. 2011, 21:11:47
Ahoj, řeším jak co nejefektivněji ošetřovat logiku zpracování chyb při použíní sql dotazů. Je toto dobré řešení?
<?php if(mysql_query($sql)){ //pokud je vse v poradku, presmerujeme pryc a informujeme, ze vse je ok header("Location: ok.php", true, 303); exit; } else{ //pokusime se znovu smazat s ignorovanim chyby if(@mysql_query($sql)){ //pokud je vse v poradku, presmerujeme pryc a informujeme, ze vse je ok header("Location: ok.php", true, 303); exit; } else{ //ulozime id u neprovedeneho sql dotazu a pote jinde vypiseme $chyba["smazat_skupiny"][] = $id; } } ?> |
||
Daevo12345 Profil * |
#2 · Zasláno: 21. 9. 2011, 09:16:51
zdravím, proč používáte dvakrát mysql_query jednou se zavináčem jednou bez, přeci pokud to nepůjde jednou a hodí to chybu tak to nemůže jít ani po druhé s potlačením výpisu chybové hlášky
možná by nebylo na škodu v případě, že dojde k chybě ji zalogovat (mysql_error a mysql_errorno) |
||
Ben Profil * |
#3 · Zasláno: 21. 9. 2011, 11:16:07
Oki, o todle mi šlo, to logování dělám, díky za radu
|
||
Joker Profil |
#4 · Zasláno: 21. 9. 2011, 11:58:24
Ben:
„Je toto dobré řešení?“ Není. Posílat v případě jakékoliv chyby ten samý dotaz znovu nemá cenu. Ještě kdyby ten skript kontroloval kód vrácené chyby a snažil se reagovat na některé konkrétní, to by mohlo mít smysl, ale vždycky poslat tentýž dotaz znovu (což v 99,99% případů povede zase k téže chybě) ne. Obecně záleží na situaci, jestli se při dané chybě dá pokračovat nebo nedá. Pokud dá, asi to může být nějak takhle, že se někde eviduje které záznamy se nepovedly a ty se pak řeší jinak. Pokud nedá, tak se při první chybě skončí, asi nejlépe ROLLBACK transakce (pokud databáze umí transakce) a výjimka. |
||
Ben Profil * |
#5 · Zasláno: 21. 9. 2011, 18:12:57
Joker:
OK, děkuju. |
||
Časová prodleva: 13 let
|
0