Dans PHP, l'extension MySQLI est un outil commun pour gérer les connexions et les requêtes de la base de données MySQL. Contrairement aux extensions MySQL , MySQLI offre plus de fonctionnalités et de flexibilité et prend en charge la programmation orientée objet. Lorsque vous utilisez MySQLI pour les opérations de base de données, nous devrons peut-être capturer des messages d'erreur pour déboguer le programme ou afficher des invites utiles à l'utilisateur. PHP fournit deux propriétés : MySQLI :: $ Errno et MySqli :: $ Erreur pour aider les développeurs à obtenir des informations d'erreur, mais ils ont des différences subtiles et conviennent à différents scénarios. Cet article analysera leurs différences en profondeur et discutera de quel attribut est plus adapté à la capture d'informations d'erreur.
mysqli :: $ errno : renvoie le code d'erreur (formulaire entier) qui s'est produit lors de la dernière opération de base de données. Si aucune erreur ne se produit, retournez 0 . Ce code d'erreur est un nombre défini par une base de données MySQL et est utilisé pour représenter différents types d'erreurs.
MySQLI :: $ ERROR : Renvoie le message d'erreur (sous forme de chaîne) qui s'est produit lors de la dernière opération de base de données. Si aucune erreur ne se produit, une chaîne vide est renvoyée. Ce message d'erreur est généralement une description détaillée renvoyée par MySQL pour aider les développeurs à comprendre ce qui se passe.
Type d'erreur :
MySQLI :: $ Errno Renvoie un code d'erreur (intégral), tandis que MySQLI :: $ Erreur renvoie une chaîne (texte) décrivant l'erreur. Cela signifie que MySqli :: $ Errno convient à la classification des erreurs et au jugement dans les programmes (tels que différents traitements en fonction du code d'erreur), tandis que l'erreur MySQLI :: $ est plus adaptée pour fournir des informations d'erreur détaillées pour un débogage facile.
Contenu d'erreur :
Les codes d'erreur sont définis en interne dans MySQL, et chaque code d'erreur correspond à un type spécifique d'erreur. Par exemple, 1062 signifie qu'une contrainte unique est violée lors de l'insertion de données. Le message d'erreur est plus intuitif, tel que "l'entrée en double pour Key 'primaire'" décrit la cause spécifique de l'erreur. Les développeurs vérifient généralement le code d'erreur pour déterminer d'abord la catégorie des problèmes, puis déboguent en fonction du message d'erreur.
Différences de performance :
Obtenir le code d'erreur ( mysqli :: $ errno ) est relativement plus léger car il s'agit simplement d'une valeur entière simple, tout en obtenant le message d'erreur ( MySQLI :: $ ERROR ) nécessite le renvoi d'une chaîne, ce qui peut affecter légèrement les performances dans certains cas, en particulier lors de l'exécution des opérations de base de données fréquentes.
Utilisation de mysqli :: $ errno :
Si vous vous souciez uniquement de savoir si une erreur s'est produite et que vous devez effectuer un traitement spécifique en fonction du code d'erreur (par exemple, lorsque le code d'erreur est 1045 , cela signifie que l'autorisation de connexion de la base de données est insuffisante), alors MySqli :: $ Errno sera plus approprié. Il fournit un moyen simple et clair de juger les catégories d'erreur.
Utilisation de MySqli :: $ Erreur :
Si vous avez besoin d'obtenir des informations d'erreur plus détaillées, ou si vous développez un outil de débogage, l'erreur MySQLI :: $ est le meilleur choix. Le message d'erreur fournit une description de problème spécifique renvoyée par MySQL, qui vous aide à localiser le problème plus rapidement.
Voici un exemple simple qui montre comment utiliser mysqli :: $ errno et mysqli :: $ error pour capturer les messages d'erreur:
<?php
// Créer une connexion de base de données
$mysqli = new mysqli("localhost", "username", "password", "database");
// Vérifiez si la connexion réussit
if ($mysqli->connect_errno) {
echo "Échec de la connexion: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
exit();
}
// Exécuter une requête
$result = $mysqli->query("SELECT * FROM non_existing_table");
if (!$result) {
// utiliser mysqli::$errno Obtenez le code d'erreur
echo "Code d'erreur: " . $mysqli->errno . "\n";
// utiliser mysqli::$error Obtenir un message d'erreur
echo "message d'erreur: " . $mysqli->error . "\n";
}
$mysqli->close();
?>
Dans cet exemple, si l'exécution de la requête échoue, nous pouvons obtenir le code d'erreur via mysqli :: $ errno et obtenir les informations d'erreur détaillées via MySqli :: $ Erreur .
mysqli :: $ errno renvoie un code d'erreur de type entier adapté à la classification et au traitement des erreurs.
MySQLI :: $ ERROR Renvoie un message d'erreur de type de chaîne, adapté pour le débogage et l'affichage des descriptions d'erreur spécifiques.
Pour attraper des informations d'erreur, si vous devez effectuer un traitement différent en fonction du code d'erreur, l'utilisation de mysqli :: $ errno est un meilleur choix. Et si vous avez besoin de déboguer et d'afficher la description d'erreur spécifique, il serait plus approprié d'utiliser MySQLI :: $ Erreur .