Lorsque vous utilisez des bases de données MySQL dans PHP, vous pouvez rencontrer une erreur lors de l'exécution de requêtes SQL. Afin de faciliter le positionnement de ces erreurs, le code d'erreur fourni par MySqli :: $ Errno peut être utilisé pour déterminer la cause de l'échec et le gérer en conséquence. Cet article mettra en place comment identifier et tester automatiquement divers types d'échecs d'exécution SQL avec mysqli :: $ errno .
mysqli :: $ errno est un attribut contenant le code d'erreur de la requête MySQL récemment exécutée. Il renvoie une valeur entière qui représente différents types d'erreurs. Ceci est très utile pour les développeurs et peut nous aider à localiser les problèmes lors de l'exécution de SQL.
Habituellement, MySQLI :: $ Errno et MySqli :: $ Erreur sont utilisés ensemble, ce dernier renverra le message d'erreur lorsqu'une erreur se produit, tandis que le premier fournit le code d'erreur spécifique pour l'erreur. Grâce à ces informations, les erreurs SQL peuvent être gérées en conséquence.
Voici plusieurs exemples courants de code d'erreur MySQL et leurs significations:
Code d'erreur | Description d'erreur |
---|---|
1045 | Accès refusé (pas d'autorisation d'accès) |
1064 | Erreur de syntaxe SQL |
1146 | Le tableau n'existe pas |
1054 | La colonne n'existe pas |
1062 | Entrée en double (violation unique des contraintes) |
Lorsque vous exécutez des requêtes SQL, vous pouvez vérifier ces codes d'erreur via mysqli :: $ errno et les traiter en conséquence en conséquence.
Tout d'abord, nous avons besoin d'une instance qui se connecte à la base de données MySQL, puis exécutez une requête SQL et vérifiez s'il y a une erreur. Voici un exemple de code:
<?php
$mysqli = new mysqli("localhost", "user", "password", "database");
if ($mysqli->connect_error) {
die("Échec de la connexion: " . $mysqli->connect_error);
}
$query = "SELECT * FROM non_existent_table"; // Intentionnellement écrit de mauvais nom de table
$result = $mysqli->query($query);
if (!$result) {
// Si la requête échoue,Obtenir des codes d'erreur et des informations d'erreur
echo "Code d'erreur: " . $mysqli->errno . "<br>";
echo "message d'erreur: " . $mysqli->error . "<br>";
// 根据Code d'erreur做不同的处理
switch ($mysqli->errno) {
case 1045:
echo "Aucune autorisation d'accès,Veuillez vérifier les autorisations de l'utilisateur de la base de données。";
break;
case 1064:
echo "SQL Erreur de syntaxe,Veuillez vérifier la syntaxe de requête。";
break;
case 1146:
echo "Le tableau n'existe pas,Veuillez vérifier le nom du tableau。";
break;
case 1054:
echo "La colonne n'existe pas,Veuillez vérifier le nom de la colonne。";
break;
case 1062:
echo "Répéter les entrées,Violation des contraintes uniques。";
break;
default:
echo "Autres erreurs,Vérifiez s'il vous plaît。";
}
} else {
// Interroger réussi,Résultats de traitement
while ($row = $result->fetch_assoc()) {
echo "données: " . $row['column_name'] . "<br>";
}
}
$mysqli->close();
?>
Dans le code ci-dessus, si l'exécution SQL échoue, le code d'erreur et le message d'erreur seront imprimés en premier. Ensuite, en fonction de la valeur de mysqli :: $ errno , nous jugeons le type d'erreur via l'instruction Switch et fournissons des invites d'erreur spécifiques.
Vous pouvez tester l'effet de mysqli :: $ errno en introduisant intentionnellement des erreurs. Par exemple, vous pouvez essayer les erreurs courantes suivantes:
Nom de la table d'erreur: lorsque la table de requête n'existe pas, MySQL renverra le code d'erreur 1146 (la table n'existe pas).
Erreur SQL Syntaxe: les erreurs de syntaxe renvoient généralement le code d'erreur 1064 .
Problème d'autorisation: si l'utilisateur de la base de données n'a pas de permis de suffisamment d'autorisations, le code d'erreur 1045 est renvoyé.
Pendant les tests, vous pouvez modifier l'instruction SQL Query pour déclencher ces erreurs et obtenir le code d'erreur correspondant via mysqli :: $ errno .
Dans certaines requêtes SQL complexes, elle peut impliquer l'utilisation d'URL ou de sources de données externes. Si des ressources externes sont impliquées dans la requête, nous pouvons utiliser une méthode similaire à ce qui suit pour vérifier si l'URL est valide:
Étiquettes associées:
SQL