Mysql
 sql >> Database >  >> RDS >> Mysql

mysqli o die, deve morire?

Deve morire?

Al contrario, non dovrebbe or die() mai.
PHP è un linguaggio di cattiva eredità. Eredità pessima. E or die() con un messaggio di errore che è uno dei peggiori rudimenti:

  • die lancia un messaggio di errore, rivelando alcuni elementi interni del sistema a un potenziale aggressore
  • confonde utenti innocenti con strani messaggi e non lascia loro alcuna interfaccia con cui lavorare, quindi è probabile che abbandonino.
  • uccide lo script nel mezzo, quindi potrebbe causare la visualizzazione di un design strappato (o del tutto assente) (ovvero un rendering incompleto della pagina richiesta dall'utente)
  • uccidere lo script in modo irrecuperabile. Mentre l'eccezione generata può essere catturata e gestita con garbo
  • die() non fornisce alcun indizio sul luogo in cui si è verificato l'errore . E in un'applicazione relativamente grande sarà piuttosto difficile da trovare.

Quindi, non usare mai die() con errori MySQL, anche per il debug temporaneo :ci sono modi migliori.

Invece di controllare manualmente l'errore, configura semplicemente mysqli per generare eccezioni in caso di errore, aggiungendo la seguente riga al tuo codice di connessione

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

e dopo scrivi ogni comando mysqli così com'è, senza alcun or die o qualsiasi altra cosa:

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

Questo codice genererà un'eccezione in caso di errore e quindi sarai sempre informato di ogni problema senza una singola riga di codice aggiuntivo.

Una spiegazione più dettagliata su come rendere la produzione della segnalazione degli errori pronta, uniforme e nel complesso ragionevole, rendendo il codice molto più pulito, è possibile trovarla nel mio articolo su Segnalazione degli errori PHP .