Les opérations de base de données sont une partie cruciale du développement de PHP. Surtout lorsque vous utilisez des bases de données MySQL, comment gérer gracieusement les erreurs et améliorer l'efficacité de débogage est une compétence que chaque développeur a besoin pour maîtriser. PHP fournit une extension MySQLI pour interagir avec les bases de données MySQL, et l'erreur MySQLI_STMT :: $ est une propriété très pratique qui peut aider les développeurs à mieux attraper et gérer les erreurs dans l'exécution de SQL. Cet article présentera comment améliorer la tolérance aux défauts et l'efficacité de débogage du code PHP via l'erreur MySQLI_STMT :: $ .
MySQLI_STMT :: $ L'erreur est une propriété de la classe MySQLI_STMT , indiquant le message d'erreur après l'exécution de l'instruction SQL actuelle. Si l'instruction SQL s'exécute avec succès, la propriété est une chaîne vide. Si une erreur se produit, elle contiendra une chaîne décrivant l'erreur.
Exemple d'utilisation:
$mysqli = new mysqli("localhost", "user", "password", "database");
if ($mysqli->connect_error) {
die("Connection failed: " . $mysqli->connect_error);
}
$stmt = $mysqli->prepare("SELECT * FROM non_existent_table");
if (!$stmt) {
echo "Prepare failed: (" . $mysqli->errno . ") " . $mysqli->error;
exit();
}
$stmt->execute();
if ($stmt->error) {
echo "Execute failed: (" . $stmt->errno . ") " . $stmt->error;
exit();
}
$stmt->close();
Dans le code ci-dessus, nous avons utilisé MySQLI_STMT :: $ ERROR pour vérifier les erreurs pendant l'exécution de SQL. S'il y a un problème avec l'instruction SQL, il imprime un message d'erreur spécifique.
Détecter les erreurs SQL <br> Vérifiez toujours si MySQLI_STMT :: $ L'erreur est vide après avoir exécuté une requête SQL. S'il n'est pas vide, cela signifie qu'une erreur s'est produite pendant le processus d'exécution. Nous pouvons suivre le processus via ce message d'erreur, tel que l'enregistrement d'un journal ou la sortie d'une invite d'erreur amicale à l'utilisateur.
Exemple:
if ($stmt->error) {
// Les erreurs de journalisation pour enregistrer
error_log("SQL Error: " . $stmt->error);
// Donner des conseils conviviaux
echo "Une erreur s'est produite,Veuillez réessayer plus tard。";
}
Améliorer les capacités de débogage <br> Au cours du processus de développement, l'erreur MySQLI_STMT :: $ peut rapidement obtenir des informations d'erreur dans l'exécution de SQL, ce qui aide à déboguer et à localiser les problèmes. Imprimer ou journaliser les messages d'erreur dans le journal, et les développeurs peuvent avoir une compréhension plus claire du problème.
Manipulation d'erreurs plus sûre <br> Utilisez MySQLI_STMT :: $ ERROR pour empêcher le programme d'interrompre ou de renvoyer des résultats inexacts en raison d'erreurs de base de données non transformées. En prenant des erreurs et en les manipulant de manière appropriée, la robustesse du code peut être considérablement améliorée.
Comment gérer efficacement les erreurs SQL dans l'environnement de production?
Dans un environnement de production, il est très dangereux de produire directement les informations d'erreur de base de données aux utilisateurs. Il est recommandé que les développeurs enregistrent des informations d'erreur dans l'environnement de production dans le fichier journal, plutôt que de l'afficher directement à l'utilisateur. Cela peut non seulement maintenir la sécurité du système, mais également fournir aux développeurs des informations de débogage nécessaires.
Exemple:
if ($stmt->error) {
// Enregistrer uniquement les erreurs,Pas de sortie vers la page
error_log("SQL Error: " . $stmt->error);
}
MySQLI_STMT :: $ L'erreur sera-t-elle automatiquement effacée?
Oui, MySQLI_STMT :: $ L'erreur sera automatiquement effacée une fois l'erreur capturée et traitée. Par conséquent, après avoir vérifié les erreurs, les développeurs devraient prendre des mesures opportunes et continuer à gérer la logique ultérieure.
Comment déboguer via URL?
Parfois, les demandes d'URL peuvent être impliquées lors du débogage des problèmes de base de données. Grâce à la fonction de journalisation, les développeurs peuvent joindre l'URL demandée lorsqu'une erreur se produit, mieux comprendre le contexte de l'erreur.
Exemple:
if ($stmt->error) {
// Obtenez le courant demandé URL
$url = "https://gitbox.net/debug.php?query=" . urlencode($_SERVER['QUERY_STRING']);
// Enregistrer URL et SQL message d'erreur
error_log("SQL Error: " . $stmt->error . " URL: " . $url);
}
Dans le code ci-dessus, en capturant l'URL de la demande actuelle, il est plus facile de comprendre le contexte de la demande.