Maison > développement back-end > tutoriel php > Pourquoi « mysqli_query() ou die() » est-il une mauvaise pratique et quelles sont les meilleures alternatives ?

Pourquoi « mysqli_query() ou die() » est-il une mauvaise pratique et quelles sont les meilleures alternatives ?

Linda Hamilton
Libérer: 2025-01-01 07:05:08
original
901 Les gens l'ont consulté

Why is

Les périls de "Mysqli or Die" : gestion alternative des erreurs en PHP

Lors de l'utilisation de l'extension mysqli pour interagir avec les bases de données MySQL, il Il est courant d'utiliser la construction « ou mourir » pour gérer les erreurs. Cependant, cette approche présente plusieurs inconvénients qui méritent d'être explorés.

Pourquoi « ou mourir » devrait-il disparaître ?

  • Exposition des éléments internes du système : « Or die » affiche des messages système sensibles, exposant potentiellement des vulnérabilités à des logiciels malveillants. utilisateurs.
  • Confusion de l'utilisateur : Les messages d'erreur peuvent être énigmatiques et frustrants pour les utilisateurs occasionnels sans expertise technique.
  • Terminaison du script : "Ou mourir" interrompt brusquement l'exécution du script, perturbant l'expérience utilisateur et entravant l'analyse des erreurs.
  • Manque de Récupérabilité : Contrairement aux exceptions, « ou mourir » n'offre aucune possibilité de récupération gracieuse ou de journalisation des erreurs.
  • Emplacement d'erreur manquant : « Ou mourir » ne fournit aucune indication sur le ligne provoquant l'erreur, ce qui rend le débogage fastidieux.

Alternatives à "Ou Mourir"

Au lieu de compter sur « ou mourir », il est fortement recommandé de configurer mysqli pour lever des exceptions en cas d'erreur. Ceci peut être réalisé avec le code suivant :

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
Copier après la connexion

Par la suite, les commandes MySQL peuvent être exécutées sans aucun code supplémentaire :

$result = mysqli_query($link, $sql);
Copier après la connexion

Gestion des exceptions

Lorsqu'une exception se produit, elle peut être détectée et traitée de manière appropriée. Par exemple :

try {
    $result = mysqli_query($link, $sql);
} catch (mysqli_sql_exception $e) {
    // Log the error in a custom table or file
    log_error($e->getMessage());
}
Copier après la connexion

Journalisation des erreurs personnalisée

En plus de la gestion des exceptions, il est souhaitable d'établir un système de journalisation des erreurs personnalisé. Cela permet de consigner les erreurs dans une table ou un fichier dédié, fournissant ainsi un référentiel centralisé pour le dépannage. La fonction de journalisation peut être implémentée comme suit :

function log_error($message) {
    // Connect to the error logging table database
    $error_conn = connect_to_error_logging_db();

    // Insert the error message into the error logging table
    $query = "INSERT INTO error_log (message, timestamp) VALUES ('$message', NOW())";
    mysqli_query($error_conn, $query);

    // Close the error logging database connection
    mysqli_close($error_conn);
}
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal