Dans PHP, MySQLI est une bibliothèque d'extension de base de données très courante utilisée pour faire fonctionner les bases de données MySQL. Et mysqli :: $ errno est le code d'erreur utilisé pour obtenir l'erreur MySQL la plus récente. Si vous utilisez accidentellement la mauvaise portée pour l'appeler, cela peut entraîner des erreurs de mauvaise évaluation et affecter la stabilité et l'exactitude du programme. Aujourd'hui, nous discuterons de ce problème commun pour aider tout le monde à éviter les pièges.
MySQLI :: $ Errno est une propriété qui appartient à la classe MySQLI . Il est utilisé pour renvoyer le code d'erreur qui s'est produit dans la dernière opération (tel que la requête, la connexion, l'exécution des instructions SQL, etc.). S'il n'y a pas d'erreur, la valeur de retour est 0 .
Habituellement, MySQLI :: $ Errno est utilisé avec d'autres messages d'erreur MySQL. Par exemple, MySQLI :: $ Erreur renvoie le message d'erreur correspondant au code d'erreur.
<?php
$mysqli = new mysqli("localhost", "user", "password", "database");
if ($mysqli->connect_error) {
echo "Échec de la connexion: " . $mysqli->connect_error;
exit();
}
// mettre en œuvre SQL Requête
$result = $mysqli->query("SELECT * FROM non_existent_table");
if ($mysqli->errno) {
echo "SQL Code d'erreur: " . $mysqli->errno . "\n";
echo "message d'erreur: " . $mysqli->error . "\n";
}
?>
Dans cet exemple, si la table de requête n'existe pas, $ mysqli-> errno renvoie un code d'erreur non nul, indiquant qu'une erreur s'est produite.
La portée de l'erreur fait généralement référence au fait que vous appelez mysqli :: $ errno dans le mauvais contexte. La chose la plus courante à ce sujet est lorsque vous utilisez une instance de connexion de la base de données ( $ mysqli ), si vous n'initialisez pas correctement la connexion ou accédez à cette propriété dans un contexte d'objet incorrect, il peut entraîner de mauvais codes d'erreur ou des messages d'erreur.
<?php
// Utilisation incorrecte mysqli::$errno
$mysqli = new mysqli("localhost", "user", "password", "database");
// Utilisez la mauvaise portée
if ($mysqli->errno) {
echo "SQL Code d'erreur: " . $mysqli->errno . "\n";
echo "message d'erreur: " . $mysqli->error . "\n";
}
?>
Dans cet exemple, si les opérations SQL n'ont pas été effectuées (comme l'exécution d'une requête), la valeur de $ mysqli-> Errno sera 0 , mais si le programme ne gère pas cela correctement, il peut être confondu avec une erreur. On pourrait penser que le code d'erreur de mysqli :: $ errno est dû au fait qu'une requête a échoué et peut ne pas réellement exécuter la requête du tout.
Pour éviter une erreur de jugement, il est recommandé que la valeur de MySqli :: $ Errno soit vérifiée uniquement après avoir effectué des opérations SQL. Autrement dit, MySQLI :: $ Errno n'a de sens qu'après les opérations de base de données (telles que la requête ou l'insertion).
Par exemple:
<?php
$mysqli = new mysqli("localhost", "user", "password", "database");
if ($mysqli->connect_error) {
echo "Échec de la connexion: " . $mysqli->connect_error;
exit();
}
// mettre en œuvre SQL Requête
$result = $mysqli->query("SELECT * FROM non_existent_table");
if ($result === false) {
echo "SQL Code d'erreur: " . $mysqli->errno . "\n";
echo "message d'erreur: " . $mysqli->error . "\n";
}
?>
Dans ce code, nous vérifions uniquement mysqli :: $ errno lorsque l'opération de requête $ mysqli-> query () renvoie false (indiquant l'échec). Si vous vérifiez l'opération SQL sans l'exécuter, cela peut conduire à une erreur de jugement.
Si vous vérifiez MySQLI :: $ Errno avant d'effectuer des opérations SQL, il retournera 0 , ce qui signifie qu'il n'y a pas d'erreur. Cependant, si vous pensez à tort qu'il s'agit d'un code d'erreur valide, cela peut rendre le programme à saisir la logique de gestion des erreurs et même rendre les opérations de base de données ultérieures imprévisibles.
Pour donner un exemple simple, si nous utilisons le code d'erreur suivant, aucune erreur ne se produit réellement, mais en raison de la portée inappropriée de l'inspection, le programme sera erroné et manipulation des erreurs:
<?php
$mysqli = new mysqli("localhost", "user", "password", "database");
// Vérification des erreurs
if ($mysqli->errno) {
echo "Code d'erreur: " . $mysqli->errno;
} else {
echo "Aucune erreur";
}
?>
Dans ce cas, bien que le programme n'ait pas d'erreurs, la sortie peut être "aucune erreur" en raison de la portée de l'erreur, ce qui conduit à une mauvaise évaluation.
MySQLI :: $ Errno ne peut être vérifié correctement qu'après avoir effectué des opérations SQL.
MySQLI :: $ Errno a une valeur de 0 avant d'effectuer des opérations de base de données, et la vérifier pour le moment n'obtient pas de message d'erreur valide.
Une utilisation appropriée de la portée peut vous aider à éviter les erreurs de jugement et à assurer la robustesse de votre programme.
J'espère que cet article peut vous aider à comprendre pourquoi appeler mysqli :: $ errno avec la mauvaise portée provoquera une erreur de jugement et donnera quelques suggestions pour éviter les erreurs. Si vous avez d'autres questions sur PHP ou la base de données, veuillez visiter notre site Web!