L'extension MySQL est l'un des outils de connexion de base de données les plus courants lors de l'utilisation de PHP pour manipuler les bases de données MySQL. Cependant, pendant les opérations de la base de données, certaines exceptions ou erreurs sont inévitables. Afin de mieux attraper et gérer ces exceptions, mysqli_sql_exception et mysqli :: $ errno fournissent des fonctions puissantes. Cet article utilisera des exemples pour illustrer comment capturer les informations détaillées sur l'exception de la base de données en combinaison avec MySQLI_SQL_EXCECTION , et gérer davantage ces erreurs à l'aide de mysqli :: $ errno .
MySQLI_SQL_Exception est une classe de PHP qui est spécifiquement utilisée pour gérer les exceptions de la base de données MySQL. Lors de l'exécution d'une requête de base de données, si une erreur se produit, MySQLI_SQL_EXCEPTION lancera l'exception correspondante. Cela permet aux développeurs d'attraper et de gérer ces exceptions via Try ... Catch des instructions sans s'appuyer sur des méthodes traditionnelles de traitement des erreurs (telles que MySQLI_ERROR ou MySQLI_ERRNO ).
Dans mysqli_sql_exception , mysqli :: $ errno enregistre le code d'erreur pour la dernière opération mysql. Il s'agit d'un nombre qui indique le type d'erreur de fonctionnement de la base de données. Par exemple, MySQLI :: $ Errno peut nous aider à distinguer s'il s'agit d'une défaillance de connexion, d'une erreur de syntaxe de requête ou d'un problème d'autorisation, etc. combinée avec MySQLLI_SQL_EXCECTION , les informations d'erreur peuvent être capturées et traitées plus en détail.
Les étapes de base pour capturer les exceptions de la base de données à l'aide de mysqli_sql_exception sont les suivantes:
Allumez le mode d'exception lors de la création d'une connexion de base de données.
Utilisez le bloc Try ... Catch Instruction pour attraper des exceptions dans les opérations de base de données.
Utilisez MySqli :: $ Errno dans le bloc de l'instruction Catch pour obtenir le code d'erreur et fournir des informations d'erreur détaillées ou une logique de traitement en fonction du code d'erreur.
Voici un exemple complet de l'utilisation de mysqli_sql_exception et mysqli :: $ errno pour attraper et gérer les exceptions de la base de données:
<?php
// Activer la gestion des exceptions
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
// Créer une connexion de base de données
try {
$mysqli = new mysqli("localhost", "root", "password", "test_database");
// Effectuer des opérations de requête de base de données
$result = $mysqli->query("SELECT * FROM non_existing_table");
} catch (mysqli_sql_exception $e) {
// Catch des exceptions de la base de données
echo "Le fonctionnement de la base de données a échoué: " . $e->getMessage() . "<br>";
// Code d'erreur de sortie
echo "Code d'erreur: " . $e->getCode() . "<br>";
// Traiter en outre différents types d'erreurs
if ($e->getCode() == 1146) { // 1146 Indique que le tableau n'existe pas
echo "erreur:Le tableau n'existe pas,Veuillez vérifier la structure de la base de données。";
} else {
echo "erreur:Impossible d'exécuter une requête,Veuillez vérifier votre SQL grammaire。";
}
// Peut également être utilisé mysqli::$errno Être précis MySQL Code d'erreur
echo "MySQL Code d'erreur: " . $mysqli->errno . "<br>";
echo "MySQL erreur信息: " . $mysqli->error . "<br>";
}
?>
Activer le rapport d'exception :
Utilisez le mysqli_report (mysqli_report_error | mysqli_report_strict); Instruction pour activer le rapport d'exception mysqli_sql_exception . Cela fait que mysqli lance une exception MySQLI_SQL_Exception lorsqu'il rencontre une erreur, plutôt que de signaler une erreur en renvoyant un code d'erreur.
Exception de capture :
Grâce à l'instruction Try ... Catch , nous pouvons attraper toutes les exceptions MySQLI_SQL_Exception et les traiter dans le bloc de l'instruction Catch .
Obtenez du code d'erreur et des informations :
Le code d'erreur de l'exception de la base de données peut être obtenu via $ e-> getcode () , et différentes informations d'invite d'erreur peuvent être fournies en fonction du code d'erreur.
Utilisation de mysqli :: $ errno et mysqli :: $ error :
Obtenez des informations de code d'erreur et d'erreur pour les bases de données MySQL via $ mysqli-> errno et $ mysqli-> error , ce qui est très utile pour les erreurs de débogage et de gestion.
En développement réel, en plus de capturer et de sortir des informations d'erreur, nous pouvons également optimiser le type d'erreur:
Journalisation des erreurs : enregistrez les informations d'erreur dans les fichiers journaux pour une visualisation et un dépannage plus faciles.
Invites d'erreur conviviales : affichez des informations d'invite conviviales en fonction du type d'erreur pour éviter d'exposer les détails de la base de données aux utilisateurs.
Traitement des transactions : Pour les opérations impliquant plusieurs requêtes, des mécanismes de transaction peuvent être utilisés pour garantir la cohérence des données et la fiabilité.
En combinant MySQLI_SQL_Exception et MySqli :: $ Errno , nous pouvons capturer et gérer des informations d'exception détaillées dans les opérations de base de données. Cela aide non seulement les développeurs à localiser les problèmes plus rapidement, mais améliore également la robustesse et l'expérience utilisateur du système. Espérons que les exemples de cet article peuvent vous aider à mieux comprendre et utiliser le mécanisme de gestion des exceptions de la base de données dans PHP.