Mysql
 sql >> Base de données >  >> RDS >> Mysql

mysqli ou mourir, doit-il mourir ?

Doit-il mourir

Bien au contraire, il ne devrait pas or die() jamais.
PHP est un langage de mauvaise hérédité. Très mauvaise hérédité. Et or die() avec un message d'erreur étant l'un des pires rudiments :

  • die renvoie un message d'erreur, révélant certains éléments internes du système à un attaquant potentiel
  • cela confond les utilisateurs innocents avec des messages étranges et ne leur laisse aucune interface avec laquelle travailler, alors ils abandonneront probablement.
  • cela tue le script au milieu, ce qui peut entraîner une conception déchirée (ou aucune conception du tout) affichée (c'est-à-dire un rendu incomplet de la page demandée par l'utilisateur)
  • tuant le script de manière irrémédiable. Alors que l'exception levée peut être interceptée et gérée avec élégance
  • die() ne vous donne aucune indication sur l'endroit où l'erreur s'est produite . Et dans une application relativement grosse, ce sera assez pénible à trouver.

Donc, n'utilisez jamais die() avec des erreurs MySQL, même pour le débogage temporaire :il y a de meilleures façons.

Au lieu de vérifier manuellement l'erreur, configurez simplement mysqli pour lancer des exceptions en cas d'erreur, en ajoutant la ligne suivante à votre code de connexion

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

et après cela, écrivez simplement chaque commande mysqli telle quelle, sans aucun or die ou autre :

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

Ce code lèvera une exception en cas d'erreur et ainsi vous serez toujours informé de chaque problème sans une seule ligne de code supplémentaire.

Une explication plus détaillée sur la façon de rendre votre production de rapports d'erreurs prête, uniforme et globalement sensée tout en rendant votre code beaucoup plus propre, vous pouvez trouver dans mon article sur Rapport d'erreur PHP .