Maison >base de données >tutoriel mysql >mysqli ou mourir : devrions-nous adopter des exceptions au lieu d'une résiliation immédiate ?
Lors de l'utilisation de requêtes MySQL en PHP, il est courant de recourir à la construction mysqli ou die pour gérer les erreurs potentielles. Cependant, est-il toujours nécessaire de terminer l'exécution du script ou existe-t-il des alternatives ?
Contrairement à son nom, la fonction die() n'est pas l'idéale approche pour la gestion des erreurs dans ce contexte. Voici pourquoi :
Au lieu d'utiliser die(), il est recommandé de configurer MySQLi pour lever des exceptions en cas d'erreur en utilisant mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT). Cela vous permet d'écrire des commandes MySQLi sans code de gestion des erreurs supplémentaire, tel que :
$result = mysqli_query($link, $sql);
En cas d'erreur, une exception sera levée. Vous pouvez détecter et gérer cette exception avec élégance, en fournissant une réponse d'erreur personnalisée ou en redirigeant les utilisateurs de manière appropriée. Par exemple :
try { $result = mysqli_query($link, $sql); } catch (mysqli_sql_exception $e) { // Handle the error here log_error($e->getMessage()); redirect_to_error_page(); }
Si vous le souhaitez, vous pouvez également enregistrer les erreurs dans un tableau séparé pour un audit ou une analyse plus approfondie. Pour ce faire, vous pouvez créer une fonction personnalisée pour gérer cette tâche :
function log_error($query, $error) { // Insert error log into a table $sql_insert_error = "INSERT INTO error_log (query, error) VALUES ('{$query}', '{$error}')"; mysqli_query($link, $sql_insert_error); }
Utiliser mysqli ou die peut sembler pratique, mais il n'est pas recommandé en raison de ses inconvénients. Au lieu de cela, configurez MySQLi pour générer des exceptions et gérer les erreurs avec élégance. Ce faisant, vous garantissez une application résiliente qui offre une meilleure expérience utilisateur même face aux erreurs.
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!