Position actuelle: Accueil> Derniers articles> Comment obtenir un message d'erreur de l'instruction SQL via MySQLI_STMT :: $ ERROR

Comment obtenir un message d'erreur de l'instruction SQL via MySQLI_STMT :: $ ERROR

gitbox 2025-05-28

Dans PHP, MySQLI est une extension de base de données couramment utilisée, qui fournit plusieurs façons d'interagir avec la base de données. La classe MySQLI_STMT fait partie de l'extension MySQLI , qui est utilisée pour exécuter des instructions de prétraitement. Une exigence commune consiste à capturer et à afficher des messages d'erreur lors de l'exécution de requêtes SQL pour aider les développeurs à déboguer et à résoudre les problèmes. Cet article présentera comment obtenir des informations d'erreur détaillées lors de l'exécution des instructions SQL via MySQLI_STMT :: $ Erreur .

1. Utilisez MySQLI_STMT :: $ Erreur pour obtenir des informations d'erreur

Lorsque vous utilisez des instructions de prétraitement, nous pouvons exécuter la requête via l'objet mysqli_stmt . La variable MySQLI_STMT :: $ Erreur enregistre les informations d'erreur lors de l'exécution de la requête. Si l'exécution SQL est réussie, la valeur est une chaîne vide; Si l'exécution de SQL échoue, une description d'erreur est renvoyée.

Exemple de code

Ce qui suit est un exemple simple montrant comment utiliser MySQLI_STMT :: $ Erreur pour obtenir des informations d'erreur lors de l'exécution de requêtes SQL.

 <?php
// Créer une connexion de base de données
$mysqli = new mysqli("localhost", "username", "password", "database_name");

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

// Préparer SQL Déclaration
$sql = "SELECT * FROM users WHERE id = ?";
$stmt = $mysqli->prepare($sql);

// 检查Déclaration是否Préparer成功
if ($stmt === false) {
    die("PréparerDéclaration失败: " . $mysqli->error);
}

// Lier les paramètres
$id = 1;
$stmt->bind_param("i", $id);

// Exécuter une requête
if (!$stmt->execute()) {
    echo "mettre en œuvre SQL Déclaration时出错: " . $stmt->error;
} else {
    echo "Interroger réussi!";
}

// 关闭Déclaration和连接
$stmt->close();
$mysqli->close();
?>

Description du code

  • Dans le code, $ stmt-> L'erreur est utilisée pour capturer les informations d'erreur lorsque la requête SQL est exécutée.

  • Si l'exécution de la requête échoue, $ stmt-> L'erreur contiendra une description d'erreur spécifique, qui peut aider les développeurs à localiser le problème.

  • Si la requête est exécutée avec succès, $ stmt-> L'erreur renvoie une chaîne vide.

2. Capture les informations d'erreur détaillées lorsque l'exécution de la requête échoue

Après avoir obtenu les informations d'erreur via $ stmt-> Erreur , nous pouvons prendre différentes mesures de débogage en fonction de différentes informations d'erreur. Les erreurs communes peuvent inclure des erreurs de syntaxe SQL, des erreurs d'orthographe de table ou de nom de champ ou des erreurs de liaison des paramètres.

Exemple: capturez les messages d'erreur SQL et les journaux

Dans les environnements de production, afin d'éviter d'exposer des informations d'erreur aux utilisateurs finaux, les développeurs enregistrent généralement les informations d'erreur dans les fichiers journaux plutôt que de les afficher directement sur la page.

 <?php
// Créer une connexion de base de données
$mysqli = new mysqli("localhost", "username", "password", "database_name");

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

// Préparer SQL Déclaration
$sql = "SELECT * FROM users WHERE id = ?";
$stmt = $mysqli->prepare($sql);

// 检查Déclaration是否Préparer成功
if ($stmt === false) {
    // Journal d&#39;erreur de journal
    error_log("Préparer SQL Déclaration失败: " . $mysqli->error, 3, "/path/to/error_log.txt");
    die("PréparerDéclaration失败");
}

// Lier les paramètres
$id = 1;
$stmt->bind_param("i", $id);

// Exécuter une requête
if (!$stmt->execute()) {
    // Journal d&#39;erreur de journal
    error_log("mettre en œuvre SQL Déclaration时出错: " . $stmt->error, 3, "/path/to/error_log.txt");
    echo "La requête a échoué,Veuillez vérifier le fichier journal。";
} else {
    echo "Interroger réussi!";
}

// 关闭Déclaration和连接
$stmt->close();
$mysqli->close();
?>

Description du code

  • Lorsque la requête est exécutée, la fonction error_log () écrit le message d'erreur dans le fichier journal. Cela peut éviter d'exposer des informations d'erreur détaillées à l'utilisateur final et d'améliorer la sécurité des applications.

  • Les fichiers journaux d'erreur doivent être placés dans un emplacement sécurisé et ne sont accessibles qu'aux développeurs ou aux administrateurs.

3. Résumé

Grâce à l'erreur MySQLI_STMT :: $ , nous pouvons facilement obtenir des informations d'erreur détaillées lors de l'exécution de la requête SQL, nous aidant à déboguer rapidement et à résoudre les problèmes. Les développeurs peuvent décider d'afficher directement le message d'erreur ou l'enregistrer dans un fichier journal en fonction des besoins réels. Lorsque vous utilisez l'extension MySQLI , la capture des informations d'erreur est une opération très importante et peut efficacement améliorer la robustesse et la sécurité de l'application.