sql >> Databáze >  >> RDS >> Mysql

mysqli or die, musí to zemřít?

Musí zemřít

Právě naopak, nemělo by or die() vůbec.
PHP je jazyk špatné dědičnosti. Velmi špatná dědičnost. A or die() přičemž chybová zpráva je jedním z nejhorších základů:

  • die zobrazí chybovou zprávu, která potenciálnímu útočníkovi odhalí některé vnitřní části systému
  • Je to matoucí nevinné uživatele podivnými zprávami a nenechává jim žádné rozhraní, se kterým by mohli pracovat, takže by pravděpodobně prostě odešli.
  • zabije skript uprostřed, takže může způsobit zobrazení roztrhaného designu (nebo vůbec žádného) (tj. neúplné vykreslení stránky, kterou uživatel požadoval)
  • nenávratně zabít skript. Zatímco vyhozená výjimka může být zachycena a elegantně zpracována
  • die() vám nenapoví místo, kde k chybě došlo . A v relativně velké aplikaci to bude docela těžké najít.

Nikdy tedy nepoužívejte die() s chybami MySQL, i pro dočasné ladění :Existují lepší způsoby.

Namísto ruční kontroly chyby stačí nakonfigurovat mysqli tak, aby vyvolalo výjimky při chybě přidáním následujícího řádku do kódu připojení

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

a poté stačí napsat každý příkaz mysqli tak, jak je, bez jakéhokoli or die nebo cokoli jiného:

$result = mysqli_query($link, $sql);

Tento kód vyvolá výjimku v případě chyby, a tak budete vždy informováni o každém problému bez jediného řádku kódu navíc.

Podrobnější vysvětlení, jak zajistit, aby byla produkce hlášení chyb připravena, jednotná a celkově rozumná a zároveň byl váš kód mnohem čistší, najdete v mém článku na Hlášení chyb PHP .



  1. Použití pouze navigace pomocí klávesnice ve Wordu, Excelu a PowerPointu (Část 3:Panely úloh)

  2. Asynchronní I/O intenzivní kód běží pomaleji než neasynchronní, proč?

  3. Začínáme s Postgres 13 na Ubuntu 20.04

  4. Jak funguje EXPORT_SET() v MariaDB