L'utilisation de l'extension MySQLI est l'une des façons les plus courantes de faire des opérations de base de données en PHP. Cependant, lorsque les erreurs de requête de la base de données, nous avons généralement besoin d'un système d'invite d'erreur clair et détaillé pour aider les développeurs à localiser et à résoudre les problèmes. MySQLI :: $ errno peut être utilisé pour obtenir des codes d'erreur qui se produisent dans les opérations de base de données. Combiné avec l'erreur MySQLI :: $ , nous pouvons implémenter un système d'invite d'erreur détaillé.
Cet article présentera comment utiliser MySQLI :: $ Errno pour créer un système d'invite d'erreur de requête de base de données détaillé pour garantir que les développeurs peuvent obtenir des informations d'erreur suffisantes lorsque des erreurs de requête se produisent.
Dans un système réel de gestion des erreurs, nous devons d'abord établir une connexion à la base de données. Dans PHP, nous pouvons utiliser la classe MySQLI pour ce faire.
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "test_db";
// Créer une connexion
$conn = new mysqli($servername, $username, $password, $dbname);
// Détecter la connexion
if ($conn->connect_error) {
die("Échec de la connexion: " . $conn->connect_error);
}
?>
Lorsque l'exécution de la requête de la base de données échoue, MySQLI :: $ Errno renvoie le mauvais numéro, et MySQLI :: $ ERROR renvoie les informations de description d'erreur. Nous pouvons utiliser ces informations pour générer des invites d'erreur détaillées.
<?php
$sql = "SELECT * FROM non_existing_table"; // Une requête incorrecte
$result = $conn->query($sql);
if (!$result) {
$errorCode = $conn->errno; // Obtenez le code d'erreur
$errorMessage = $conn->error; // Obtenir un message d'erreur
echo "Erreur de requête,Code d'erreur:$errorCode,message d'erreur:$errorMessage";
}
?>
Dans le code ci-dessus, nous avons délibérément écrit une requête SQL incorrecte dans le but de déclencher l'erreur. Lorsque la requête échoue, nous obtenons le code d'erreur via $ con-> errno et la description de l'erreur via $ con-> erreur pour aider les développeurs à comprendre clairement le problème.
Afin de rendre l'invite d'erreur plus opérationnelle, le message d'erreur peut être formaté en une page HTML, y compris plus d'informations de diagnostic, telles que le code d'erreur, le contenu de requête, le temps d'erreur, etc.
<?php
function handleDatabaseError($conn) {
$errorCode = $conn->errno;
$errorMessage = $conn->error;
$query = $conn->last_query; // Obtenez la question la plus récemment exécutée
$timestamp = date("Y-m-d H:i:s");
echo "<h2>数据库Erreur de requête</h2>";
echo "<p><strong>Temps d'erreur:</strong>$timestamp</p>";
echo "<p><strong>Code d'erreur:</strong>$errorCode</p>";
echo "<p><strong>message d'erreur:</strong>$errorMessage</p>";
echo "<p><strong>Requête d'exécution:</strong><pre>$query</pre></p>";
echo "<p>Vérifiez, s'il vous plaît SQL Interroger et essayer de corriger les erreurs。</p>";
}
$sql = "SELECT * FROM non_existing_table"; // Requête d'erreur
$result = $conn->query($sql);
if (!$result) {
handleDatabaseError($conn); // Fonction de traitement des erreurs d'appel
}
?>
Dans cet exemple, nous créons une fonction GreatSatabaseError qui formate et affiche des informations d'erreur détaillées. Nous avons également démontré des requêtes SQL exécutées pour aider les développeurs à trouver rapidement la cause profonde du problème.
En plus d'afficher les messages d'erreur sur la page, il est également une pratique courante d'enregistrer les messages d'erreur dans les fichiers journaliers. Cela évite l'exposition directe des messages d'erreur de base de données sensibles dans les environnements de production.
<?php
function logDatabaseError($conn) {
$errorCode = $conn->errno;
$errorMessage = $conn->error;
$query = $conn->last_query;
$timestamp = date("Y-m-d H:i:s");
$logMessage = "[$timestamp] Code d'erreur: $errorCode, message d'erreur: $errorMessage, Requête: $query\n";
file_put_contents("database_errors.log", $logMessage, FILE_APPEND);
}
$sql = "SELECT * FROM non_existing_table"; // Requête d'erreur
$result = $conn->query($sql);
if (!$result) {
logDatabaseError($conn); // Les erreurs de journalisation pour enregistrer
handleDatabaseError($conn); // Erreurs de traitement et d'affichage
}
?>
Le code ci-dessus montre comment rédiger des informations d'erreur dans la base de données du fichier journal_errors.log . De cette façon, les développeurs peuvent afficher toutes les erreurs de requêtes de base de données dans le fichier journal du serveur sans avoir à les exposer directement à l'utilisateur.
En combinant MySQLI :: $ Errno et MySQLI :: $ ERROR , nous pouvons créer un système d'invite d'erreur de requête de base de données détaillé pour aider les développeurs à localiser rapidement les problèmes. Nous pouvons également améliorer encore la robustesse du système en enregistrant, garantissant que les informations d'erreur de base de données sensibles ne sont pas exposées dans l'environnement de production.
Cette méthode de traitement des erreurs peut améliorer considérablement l'efficacité du développement et du débogage, en particulier lorsqu'il est confronté à des opérations de base de données complexes. Si vous souhaitez améliorer davantage la sécurité et la maintenabilité de votre système, vous pouvez ajouter plus de fonctions d'analyse de journaux et de surveillance des erreurs sur cette base.