Lors du développement d'applications Web, la journalisation des erreurs lors du traitement des opérations de base de données est cruciale, en particulier dans les grands projets, le suivi des erreurs et la résolution peuvent considérablement améliorer la stabilité du système et l'expérience utilisateur. L'extension MySQLI en PHP fournit une fonctionnalité très utile, MySQLI_STMT :: $ Error , qui peut nous aider à attraper facilement des erreurs dans les opérations de base de données et les enregistrements de journal.
Cet article présentera comment utiliser la fonction MySQLI_STMT :: $ Erreur pour créer un système de journalisation d'erreur automatique et surveiller les erreurs de fonctionnement de la base de données en temps réel. Grâce à cette méthode, vous pouvez vous assurer que lorsqu'une erreur se produit, le système peut répondre rapidement et enregistrer des informations d'erreur détaillées, ce qui facilite le dépannage et la réparation ultérieurs.
MySQLI_STMT :: $ L'erreur est une propriété de la classe MySQLI_STMT , qui est utilisée pour renvoyer le message d'erreur de la dernière opération de requête MySQLI_STMT . Si la requête est exécutée avec succès, la propriété sera vide. Si une erreur se produit dans la requête, la propriété renvoie une description d'erreur. Grâce à cette propriété, nous pouvons capturer des messages d'erreur lorsque MySQL exécute des instructions.
// Exemple:utiliser mysqli_stmt::$error Capture du message d'erreur
if ($stmt->execute()) {
echo "Interroger réussi!";
} else {
echo "message d'erreur: " . $stmt->error;
}
Pour enregistrer automatiquement les erreurs de fonctionnement de la base de données, vous pouvez créer un système de journal d'erreur simple qui saisira toutes les erreurs de fonctionnement de la base de données et les enregistrer dans un fichier journal. Voici un exemple de PHP simple montrant comment utiliser MySQLI_STMT :: $ Erreur pour attraper et enregistrer les erreurs de base de données:
<?php
// Créer une connexion de base de données
$mysqli = new mysqli("localhost", "username", "password", "database");
// Vérifiez si la connexion réussit
if ($mysqli->connect_error) {
die("Échec de la connexion: " . $mysqli->connect_error);
}
// fonction:Les erreurs de journal dans le fichier journal
function log_error($message) {
$logFile = '/path/to/log/error_log.txt'; // Chemin de fichier journal
$date = date("Y-m-d H:i:s");
$logMessage = "[$date] - $message\n";
file_put_contents($logFile, $logMessage, FILE_APPEND);
}
// Préparer SQL Requête
$query = "SELECT * FROM users WHERE id = ?";
$stmt = $mysqli->prepare($query);
if ($stmt === false) {
// si SQL 语句Préparer失败,Erreurs d'enregistrement
log_error("SQL Préparer失败: " . $mysqli->error);
die("SQL erreur: " . $mysqli->error);
}
// 绑定参数并执行Requête
$id = 1;
$stmt->bind_param("i", $id);
if (!$stmt->execute()) {
// siRequête执行失败,Erreurs d'enregistrement
log_error("Requête执行失败: " . $stmt->error);
die("Requête失败: " . $stmt->error);
}
// Obtenez les résultats et traitez-les
$result = $stmt->get_result();
if ($result->num_rows > 0) {
// Données de sortie
while ($row = $result->fetch_assoc()) {
echo "utilisateurID: " . $row["id"] . " - Nom: " . $row["name"] . "<br>";
}
} else {
echo "Aucune donnée trouvée";
}
// Fermez des déclarations et des connexions de base de données
$stmt->close();
$mysqli->close();
?>
Connexion de la base de données : utilisez de nouveaux mysqli () pour vous connecter à la base de données et vérifiez si la connexion est réussie.
Fonction de journalisation : la fonction log_error () appelle les informations d'erreur dans le fichier journal spécifié.
Exécution de la requête SQL : Préparez la requête SQL via Pread () , bind_param () pour lier les paramètres, exécuter EXECUTE () et utiliser MySQLI_STMT :: $ Erreur pour enregistrer les informations d'erreur lorsque l'exécution échoue.
Résultat de sortie : si la requête est réussie, le résultat sera sorti; Si aucune donnée n'est renvoyée, "aucune donnée trouvée".
Afin de pouvoir surveiller les erreurs dans les opérations de base de données en temps réel, nous pouvons rédiger des informations d'erreur dans un fichier journal, et nous pouvons obtenir des informations d'erreur en temps réel en vérifiant opportun le fichier journal. Ce qui suit est un exemple d'utilisation de PHP pour lire le journal d'erreur et afficher les messages d'erreur à l'avant.
<?php
// Lire les fichiers journaux en temps réel
function get_recent_errors($logFile) {
$errors = file_get_contents($logFile);
return nl2br($errors); // Convertir les pauses de ligne en HTML Pause
}
$logFile = '/path/to/log/error_log.txt';
$recentErrors = get_recent_errors($logFile);
echo "<h2>最近的数据库操作erreur:</h2>";
echo "<pre>$recentErrors</pre>";
?>
Lire le fichier journal : Lisez le contenu du fichier journal via File_get_Contents () .
Afficher le message d'erreur : Affichez le contenu dans la connexion sur la page, convertissez la nouvelle ligne en balises HTML <br> via la fonction NL2BR () pour le rendre plus facile à lire.
Avec la méthode ci-dessus, vous pouvez facilement attraper et enregistrer les erreurs dans les opérations de base de données à l'aide de la fonction d'erreur MySQLI_STMT :: $ en php. Combiné avec le système de journalisation des erreurs automatique et la surveillance en temps réel, vous pouvez rapidement découvrir et résoudre les problèmes dans les opérations de base de données. Cela améliore non seulement l'efficacité du développement, mais vous aide également à répondre rapidement aux exceptions du système dans un environnement de production.
Dans le développement réel, vous pouvez étendre davantage le système selon les besoins, comme la notification des développeurs par e-mail, l'enregistrement des informations d'erreur à l'aide de la base de données, etc.