Mysql
 sql >> Baza danych >  >> RDS >> Mysql

mysqli czy umrzeć, czy to musi umrzeć?

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 .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Paginacja za pomocą MySQL LIMIT, OFFSET

  2. Zainstaluj Mtop (monitorowanie serwera bazy danych MySQL) w RHEL/CentOS 6/5/4, Fedora 17-12

  3. Monitorowanie klastra Percona XtraDB — kluczowe wskaźniki

  4. int(11) vs. int(cokolwiek innego)

  5. Jak zduplikować tabelę w MySQL