Czy musi umrzeć
Wręcz przeciwnie, nie powinno or die()
kiedykolwiek.
PHP to język złej dziedziczności. Bardzo zła dziedziczność. I or die()
z komunikatem o błędzie będącym jednym z najgorszych podstaw:
- die wyrzuca komunikat o błędzie, ujawniając niektóre elementy wewnętrzne systemu potencjalnemu napastnikowi
- dezorientuje niewinnych użytkowników dziwnymi wiadomościami i nie pozostawia im żadnego interfejsu do pracy, więc prawdopodobnie po prostu zrezygnują.
- zabija skrypt w środku, więc może spowodować uszkodzenie projektu (lub jego brak) pokazany (tj. niekompletne renderowanie strony, o którą poprosił użytkownik)
- nieodwracalne zabicie skryptu. Chociaż zgłoszony wyjątek może zostać przechwycony i sprawnie obsłużony
die()
nie daje żadnej wskazówki, miejsce, w którym wystąpił błąd . A w stosunkowo dużej aplikacji będzie to dość trudne do znalezienia.
Dlatego nigdy nie używaj die()
z błędami MySQL, nawet w przypadku tymczasowego debugowania :są lepsze sposoby.
Zamiast ręcznie sprawdzać błąd, po prostu skonfiguruj mysqli tak, aby zgłaszał wyjątki w przypadku błędu, dodając następujący wiersz do kodu połączenia
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
a potem po prostu napisz każde polecenie mysqli tak, jak jest, bez żadnego or die
lub cokolwiek innego:
$result = mysqli_query($link, $sql);
Ten kod zgłosi wyjątek w przypadku błędu, dzięki czemu zawsze będziesz informowany o każdym problemie bez ani jednej linii dodatkowego kodu.
Bardziej szczegółowe wyjaśnienie, jak sprawić, by produkcja raportowania błędów była gotowa, ujednolicona i ogólnie rozsądna, jednocześnie czyniąc kod znacznie czystszym, można znaleźć w moim artykule na temat Raportowanie błędów PHP .