Lors du développement d'applications PHP, nous interagissons souvent avec la base de données. Lorsque vous utilisez une extension MySQLI , MySQLI :: $ ERRNO et MySQLI :: $ Erreur sont des outils très courants et importants pour attraper des erreurs de base de données. Cependant, de nombreux développeurs peuvent mal comprendre l'objectif de mysqli :: $ errno et le considérer simplement comme un outil pour vérifier les erreurs de connexion de la base de données. Ce malentendu peut rendre le dépannage plus compliqué, surtout lorsque des erreurs se produisent. Cet article analysera en détail comment utiliser MySqli :: $ Errno correctement pour éviter les malentendus courants.
mysqli :: $ errno est une propriété d'un objet mysqli qui est utilisé pour stocker le code d'erreur de l'opération MySQL précédente. Si l'opération précédente a été exécutée avec succès, la valeur de MySqli :: $ Errno sera 0 , sinon elle renverra un code d'erreur non nul.
Il convient de noter que MySQLI :: $ Errno ne convient pas seulement aux erreurs de connexion de la base de données, mais aussi à toutes les opérations de requête SQL effectuées via MySQLI .
<?php
// Créer une connexion de base de données
$mysqli = new mysqli("localhost", "user", "password", "database");
// Vérifiez la connexion
if ($mysqli->connect_errno) {
echo "Échec de la connexion: " . $mysqli->connect_error;
exit();
}
// Exécuter une requête
$query = "SELECT * FROM non_existing_table";
$result = $mysqli->query($query);
// Vérifiez si la requête est réussie
if (!$result) {
echo "Erreur de requête: " . $mysqli->error;
echo "Code d'erreur: " . $mysqli->errno; // Obtenez le code d'erreur
}
$mysqli->close();
?>
Dans ce code, MySQLI :: $ Errno renvoie le code d'erreur pour l'erreur de requête (s'il existe), et MySQLI :: $ Erreur fournira des informations détaillées sur l'erreur.
De nombreux développeurs croient à tort que MySqli :: $ Errno n'est utilisé que pour vérifier les erreurs lors des connexions de la base de données. Si nous comprenons mal MySqli :: $ Errno , cela peut conduire à manquer des informations d'erreur importantes lors du dépannage d'autres problèmes. En fait, MySQLI :: $ Errno peut être utilisé pour vérifier les erreurs de requête, les erreurs de mise à jour et même les défaillances de validation de transaction, etc.
<?php
$mysqli = new mysqli("localhost", "user", "password", "database");
// Mauvaises hypothèses:只Vérifiez la connexionerreur
if ($mysqli->connect_errno) {
echo "Échec de la connexion: " . $mysqli->connect_error;
exit();
}
// Dans le mauvais sens:Ne vérifiez pas les autres SQL erreur
$query = "SELECT * FROM non_existing_table";
$mysqli->query($query);
// 此处没有Vérifiez si la requête est réussie,可能错过了Erreur de requête
$mysqli->close();
?>
Dans le code ci-dessus, le développeur peut croire à tort qu'il n'a besoin que de prêter attention aux erreurs de connexion et ignore la vérification des erreurs de requête. Cela entraînera que d'autres problèmes dans la base de données ne peuvent pas attraper lorsque la requête est exécutée.
Afin d'éviter les malentendus ci-dessus, nous devons vérifier MySqli :: $ Errno après avoir effectué chaque opération de base de données, qu'il s'agisse d'une opération de connexion, de requête, de mise à jour, de suppression et d'autres opérations de base de données. Ce n'est que de cette manière que les problèmes de base de données potentiels peuvent être découverts plus tôt.
<?php
// Créer une connexion de base de données
$mysqli = new mysqli("localhost", "user", "password", "database");
// Vérifiez la connexionerreur
if ($mysqli->connect_errno) {
echo "Échec de la connexion: " . $mysqli->connect_error;
exit();
}
// Exécuter une requête
$query = "SELECT * FROM non_existing_table";
$result = $mysqli->query($query);
// Vérifiez si la requête est réussie
if (!$result) {
echo "Erreur de requête: " . $mysqli->error;
echo "Code d'erreur: " . $mysqli->errno; // 获取Erreur de requête码
}
$mysqli->close();
?>
Dans le code ci-dessus, nous vérifions non seulement les erreurs de connexion de la base de données, mais vérifions également les erreurs de requête possibles après la requête. Cela garantit que nous saisissons les problèmes dans chaque lien, positionnant et résolvant ainsi plus efficacement les problèmes.
Afin de comprendre le code d'erreur renvoyé par MySQLI :: $ Errno plus clairement, nous pouvons consulter le document de code d'erreur MySQL. Voici quelques exemples de code d'erreur communs:
1045 : "Accès refusé pour l'utilisateur" - Nom d'utilisateur ou erreur de mot de passe
1146 : "La table n'existe pas" - la table n'existe pas
1064 : "Vous avez une erreur dans votre syntaxe SQL" - Erreur de syntaxe SQL
La compréhension de ces codes d'erreur nous aidera à mieux interpréter les informations d'erreur et à localiser rapidement les problèmes.
MySQLI :: $ Errno est principalement utilisé pour fournir un code d'erreur, tandis que MySQLI :: $ Erreur renvoie une description d'erreur détaillée. Lors du dépannage des problèmes, vous devez généralement utiliser ces deux attributs en combinaison pour comprendre pleinement les raisons de l'échec du fonctionnement de la base de données.
<?php
$mysqli = new mysqli("localhost", "user", "password", "database");
if ($mysqli->connect_errno) {
echo "Échec de la connexion: " . $mysqli->connect_error;
exit();
}
$query = "SELECT * FROM non_existing_table";
$result = $mysqli->query($query);
if (!$result) {
echo "La requête a échoué: " . $mysqli->error . "<br>";
echo "Code d'erreur: " . $mysqli->errno;
}
$mysqli->close();
?>
En diffusant des informations d'erreur et des codes d'erreur en même temps, nous pouvons avoir une compréhension plus claire de la cause profonde du problème et prendre des mesures correspondantes pour la réparer.
MySqli :: $ Errno est une propriété très importante en PHP. Il est non seulement utilisé pour vérifier les erreurs de connexion de la base de données, mais est plus largement utilisée dans toutes les opérations MySQL. Afin d'éviter le dépannage causé par des malentendus, nous devons vérifier MySqli :: $ Errno après chaque opération de base de données pour garantir que toutes les erreurs potentielles peuvent être capturées à temps. La compréhension et l'utilisation correctes de MySqli :: $ Errno peuvent nous permettre de résoudre les problèmes plus efficacement pendant le processus de développement et de réduire la survenue de bogues.