![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 20.08.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Witajcie!
Jakiś czas temu napisałem klasę do komunikacji z MySql. Wszystkie błędy przechwytuję przy pomocy funkcji: mysql_errno(); i mysql_error(); Po pojawieniu się ewentualnego błędu, zapisuję go w sesji i przekierowuje do skryptu error.php, który wyświetla elegancką podstronę błędu, pasującą do wyglądu strony. W tej chwili odkryłem sytuację, w której ta metoda zawodzi. Jeżeli funkcja mysql_connect(); nie może się połączyć, bo na przykład pomylimy nazwę użytkownika, to ani mysql_errno(); ani mysql_error(); nie czyta błędu, a php wyświetla stronę z treścią: Warning: mysql_connect(): Access denied for user 'xxxxx'@'localhost' (using password: YES) in /www/library/php_classes/db.class.php on line 30 Jak rozwiązać taki problem, może jest zupełnie inna, lepsza metoda na eleganckie wyświetlanie błędów na stronie. (M.) |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 282 Pomógł: 89 Dołączył: 12.04.2011 Ostrzeżenie: (0%) ![]() ![]() |
Trochę dziwi mnie używanie mysql_connect() w obiektowym php, nie lepiej mysqli lub PDO?
A ten komunikat to jest warning php, zależy od ustawień php.ini, error_reporting() i tym podobnych. Można też jednorazowo:
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 20.08.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Dziękuję za odpowiedź!
Z przykrością stwierdzam, że nie zawiera ona rozwiązania mojego problemu. Ja nie chcę wyłączać informacji o błędach i ostrzeżeniach a wyświetlać je w kontrolowany sposób. Przedstawiona metoda pozwala przeczytać błąd, nie ostrzeżenie i to już po tym jak serwer php wyświetli swoją stronę, czego właśnie chcę uniknąć. Uwaga na temat funkcji łączenia się z bazą danych jest bardzo lakoniczna acz intrygująca. Czy mogę prosić o jakieś konkretne, techniczne argumenty na poparcie/wyjaśnienie zdziwienia kolegi? (M.) |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 709 Pomógł: 176 Dołączył: 24.10.2010 Ostrzeżenie: (0%) ![]() ![]() |
Przeczytaj: http://pl.wikibooks.org/wiki/PHP/Biblioteka_PDO
jak widzisz proces łączenia z bazą danych możesz zamknąć w bloku tryi za pomocą catchwyłapać ew błąd w połączeniu. -------------------- http://d3ut3r.wordpress.com/ | mysql_* jest przestarzałe UŻYWAJ PDO!
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 20.08.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Dziękuję bardzo!
Po przeczytaniu załączonego artykułu na pewno przesiądę się na PDO. Mój problem rozwiązałem tak:
Znalazłem w dokumentacji opis jak przypisać własną funkcję, do której trafiają błędy. To załatwia problem błędów zgłaszanych przez mysql_connect();, których nie czytają mysql_errno(); i mysql_error();. Błędy zapytań do bazy nadal czytam standardowo. Co ciekawe, serwer doskonale pokazuje kontekst wystąpienia błędu z zmiennej $context. (M.) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 11:18 |