Position actuelle: Accueil> Derniers articles> Comment imprimer les instructions SQL et le contenu des objets de résultat lorsqu'une erreur se produit

Comment imprimer les instructions SQL et le contenu des objets de résultat lorsqu'une erreur se produit

M66 2025-05-28

Dans PHP, lorsque vous utilisez l'extension MySQLI pour interagir avec une base de données MySQL, nous utilisons souvent la fonction MySQLI_RESULT pour traiter les résultats de la requête. Afin de s'assurer que toutes les erreurs peuvent être capturées lors de l'exécution de requêtes SQL et afficher le contenu des instructions SQL et des objets de résultat lorsque l'erreur se produit, nous effectuons généralement une sortie de débogage supplémentaire lorsque l'erreur se produit.

Dans cet article, nous montrerons comment capturer des erreurs et imprimer le contenu des instructions SQL et des objets de résultat de requête lors de l'exécution d'une requête.

Étape 1: Créez une connexion de base de données

Tout d'abord, nous devons créer une connexion à la base de données MySQL. Ici, nous utilisons MySQLI_Connect pour nous connecter au serveur de base de données.

 <?php
$host = "localhost";  // Adresse hôte de la base de données
$username = "root";   // Nom d&#39;utilisateur de base de données
$password = "";       // Mot de passe de base de données
$dbname = "my_database";  // Nom de base de données

// Créer une connexion
$conn = new mysqli($host, $username, $password, $dbname);

// Vérifiez si la connexion réussit
if ($conn->connect_error) {
    die("Échec de la connexion: " . $conn->connect_error);
}
?>

Étape 2: Exécutez la requête et traitez les résultats

Lors de l'exécution de requêtes SQL, nous pouvons capturer la valeur de retour de la fonction mysqli_query . Si une erreur de requête se produit, nous allons imprimer l'instruction SQL et le contenu de l'objet de résultat renvoyé.

 <?php
// Exemple SQL Requête
$sql = "SELECT * FROM users"; // Requête users Tous les enregistrements du tableau

// 执行Requête
$result = $conn->query($sql);

// 检查Requête是否成功
if (!$result) {
    // 如果Requête失败,Imprimer le message d&#39;erreur
    echo "Requête失败: " . $conn->error . "<br>";
    
    // Imprimer l&#39;exécuté SQL Déclaration
    echo "SQL Déclaration: " . $sql . "<br>";
    
    // Imprimer mysqli_result Contenu d&#39;objet(Le cas échéant)
    echo "结果Contenu d&#39;objet: ";
    var_dump($result);
} else {
    // 如果Requête成功,Résultats de traitement
    while ($row = $result->fetch_assoc()) {
        echo "utilisateurID: " . $row["id"] . " - utilisateur名: " . $row["username"] . "<br>";
    }
}
?>

expliquer

  1. $ Conn-> Query ($ SQL) : Cette ligne de code est utilisée pour exécuter les requêtes SQL. Si la requête échoue, $ le résultat sera faux et nous pouvons imprimer le message d'erreur et l'instruction SQL.

  2. $ Conn-> Erreur : cette propriété renvoie le dernier message d'erreur de requête SQL récemment exécuté. Nous pouvons l'utiliser pour diagnostiquer la cause de la défaillance de la requête.

  3. var_dump ($ result) : Si la requête échoue, la variable de résultat $ sera fausse . Pour le débogage, nous utilisons var_dump pour sortir le contenu de l'objet mysqli_result pour nous aider à afficher les informations spécifiques lorsqu'une erreur se produit.

Étape 3: Fermez la connexion de la base de données

Une fois l'opération terminée, nous devons fermer la connexion de la base de données.

 <?php
$conn->close();
?>

Résumer

Grâce à l'exemple de code ci-dessus, lorsque la requête SQL échoue, le programme imprimera les instructions SQL et les messages d'erreur SQL, aidant les développeurs à déboguer et à localiser les problèmes. Surtout pendant les phases de développement et de test, la capture et la sortie de ces informations est très utile, garantissant que nous trouvons rapidement le problème dans la requête.

Si vous développez une application de base de données plus complexe, il est recommandé d'effectuer la gestion des erreurs et de déboguer la sortie chaque fois qu'une requête est exécutée, surtout si l'instruction de requête peut être erronée en raison d'une entrée dynamique ou d'autres facteurs.

J'espère que cet article vous sera utile, et vous êtes invités à poser plus de questions à tout moment!