Maison >développement back-end >tutoriel php >Pourquoi « mysqli_query() ou die() » est-il une mauvaise pratique et quelles sont les meilleures alternatives ?
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 ?
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);
Par la suite, les commandes MySQL peuvent être exécutées sans aucun code supplémentaire :
$result = mysqli_query($link, $sql);
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()); }
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); }
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!