Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: php zamiast zgłosić bląd, zawiesza się
Forum PHP.pl > Forum > PHP
Laro
Niedawno dostałem do przerobienia projekt php i pomimo, iż php znam tylko troszkę, jakoś sobie radze. Jednakże ostatnio napotkałem na problem, z którym bardzo długo wałczyłem ponieważ php nie wyświetlał zdanego błędu. Nawet w logach niczego nie było po mimo, ze w pliku php.ini włączone jest logowanie błędów, a na stronce php ustawione jest @error_reporting(E_ALL).

Błąd plegal na tym, że w pewnym przypadku zmienna używana w klauzurze WHERE w SELECT była pustym stringiem:

Np. SELECT * FROM tabela WHERE nazwa = $zmienna_nazwa;

I tak gdy $zmienna_nazwa = „” to select wyglądał oczywiście tak:


„SELECT * FROM tabela WHERE nazwa = „
I w tym momencie stronka sie zawieszała, nie generując żadnej informacji o błędzie.
Dlaczego? Próbowałem też całość kodu umieścić w klauzurze TRY CATCH , ale to też nie pomogło.
nospor
pokaz wiekszy kawalek kodu, jak to obslugujesz, moze ci sie petla zapetla, moze ufo spadlo na serwer, a moze oprocz error_reporting trzeba rowniez ustawic display_errors, a moze .... i tak do x, gdzie x dozy do nieskonczonosci winksmiley.jpg
Laro
Żeby nie było nieporozumienia…sam błąd już naprawiłem…interesuje mnie tylko czemu php nie zgłosił błędu.


Oto fragment php.ini

error_reporting = E_ALL
display_errors = On
display_startup_errors = Off
log_errors = On
log_errors_max_len = 1024
ignore_repeated_errors = Off
ignore_repeated_source = Off
report_memleaks = On
report_zend_debug = 0
track_errors = Off
error_log=log1.txt


A fragment kodu, na którym się zawiesza:

  1. <?php
  2. $query = "SELECT a.jmeno2, a.prijmeni FROM administrace_pristupy a where a.id = $sess
    _administrace_id_admin"
    ;
  3. $wynik = sql($query);
  4. $row = mysql_fetch_row($wynik);
  5. $nazwa_uzytkownika = $row[0]." ".$row[1];
  6.  
  7.  
  8. function sql($sql_query)
  9. {
  10. $result = false;
  11.  
  12. $result = mysql_query($sql_query);
  13. if (!($result))
  14. {
  15.  
  16. echo ("Chyba SQL dotazu.");
  17. echo ("<BR>" . mysql_errno() . ": " . mysql_error() . "<BR>".$sql_query);
  18. sql_close();
  19. exit();
  20. }
  21.  
  22. return $result;
  23. }
  24. ?>
nospor
php nie generowal bledu, bo dla php nie bylo zadnego bledu. w przypadku zlego zapytania, ty to przechwytujesz i konczysz dzialanie skryptu: exit(); Nie dochodzi wiec do sytuacji, gdy do funkcji obrabiajacych zapytanie trafia zly Resource.
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.