Dans le développement réel, lors de l'exécution des requêtes de base de données, nous devons souvent juger si la requête est réussie. Si la requête échoue, elle affectera non seulement le fonctionnement normal du système, mais peut également entraîner des exceptions du programme ou des incohérences de données. Par conséquent, il est très important d'adopter des mécanismes de tolérance aux défauts efficaces pour capturer et gérer ces échecs. La fonction d'erreur MySQLI_STMT :: $ peut aider les développeurs à obtenir des informations détaillées sur les défaillances de la requête SQL, et ainsi prendre des mesures correspondantes pour restaurer le fonctionnement normal du système.
MySQLI_STMT :: $ L'erreur est une propriété de la classe MySQLI_STMT dans MySQLI. Après avoir exécuté l'instruction SQL, il renvoie le message d'erreur de la requête MySQL. S'il n'y a pas d'erreur dans la requête, il renverra une chaîne vide. Grâce à cette propriété, nous pouvons obtenir la cause spécifique de l'erreur lorsque la requête échoue.
Voici un exemple de base montrant comment utiliser MySQLI_STMT :: $ ERROR pour gérer les échecs de requête MySQL.
<?php
// Connexion de base de données
$host = 'localhost';
$username = 'root';
$password = '';
$database = 'test_db';
$conn = new mysqli($host, $username, $password, $database);
// Vérifiez si la connexion réussit
if ($conn->connect_error) {
die('Échec de la connexion: ' . $conn->connect_error);
}
// Préparer SQL Requête
$sql = "SELECT * FROM users WHERE id = ?";
$stmt = $conn->prepare($sql);
// 检查Préparer语句是否成功
if (!$stmt) {
die('SQL 语句Préparer失败: ' . $conn->error);
}
// 绑定参数并执行Requête
$id = 1;
$stmt->bind_param("i", $id);
if (!$stmt->execute()) {
// Requête失败,Message d'erreur de sortie
echo 'Requête失败: ' . $stmt->error;
} else {
// Requête成功,Résultats de traitement
$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
echo "utilisateur ID: " . $row['id'] . "<br>";
}
}
// Fermer la connexion
$stmt->close();
$conn->close();
?>
Connectez-vous à la base de données : tout d'abord, utilisez la classe MySQLI pour créer une connexion de base de données. Si la connexion échoue, publiez directement le message d'erreur et quittez.
Préparer la déclaration SQL : nous utilisons $ con-> Préparer ($ SQL) pour préparer l'instruction de requête. Si la préparation de l'instruction échoue, utilisez $ con-> Erreur pour obtenir le message d'erreur.
Bind Paramètres et exécuter la requête : Avant d'exécuter la requête, nous lions les paramètres de requête et vérifions si elle réussit pendant l'exécution. Si EXECUTE () Renvoie False , cela signifie que la requête a échoué, puis utilisez $ stmt-> Erreur pour obtenir les informations d'erreur et la sortir.
Requête réussie : si la requête est réussie, le résultat est obtenu via get_result () et affiché.
Dans le développement réel, nous avons souvent besoin d'une gestion des erreurs plus détaillée. Dans le code ci-dessus, nous publions simplement le message d'erreur, mais dans un environnement de production, le message d'erreur ne doit pas être directement exposé à l'utilisateur, mais doit être enregistré et fournir aux utilisateurs des invites amicales.
<?php
// Fonction du journal d'erreur
function logError($message) {
$logFile = 'error_log.txt';
$date = date('Y-m-d H:i:s');
file_put_contents($logFile, "[$date] $message\n", FILE_APPEND);
}
// 执行Requête时,S'il échoue,Enregistrer le message d'erreur pour enregistrer
if (!$stmt->execute()) {
logError('Requête失败: ' . $stmt->error);
echo 'Requête失败,Veuillez réessayer plus tard。';
}
?>
Dans cet exemple, lorsque la requête échoue, le message d'erreur sera connecté dans un fichier nommé error_log.txt et ne sera pas directement exposé à l'utilisateur. Cela aide les développeurs à suivre les erreurs lorsque des problèmes surviennent sans affecter l'expérience utilisateur.
En utilisant MySQLI_STMT :: $ Erreur , nous pouvons facilement capturer des informations d'erreur lorsque la requête MySQL échoue et prendre des mesures correspondantes en fonction de ces informations d'erreur. Qu'il s'agisse simplement de diffuser des messages d'erreur ou d'enregistrer des erreurs dans les fichiers journaux, il peut efficacement améliorer la stabilité et la fiabilité du système. Un bon mécanisme de tolérance aux défauts peut non seulement aider les développeurs à localiser rapidement des problèmes lorsque des erreurs se produisent, mais également à améliorer l'expérience utilisateur et à garantir que le système ne s'écrase pas lors de la rencontre des problèmes.