Position actuelle: Accueil> Derniers articles> Éviter la FAQ des erreurs lors de l'utilisation de MySqli :: $ info dans PHP

Éviter la FAQ des erreurs lors de l'utilisation de MySqli :: $ info dans PHP

gitbox 2025-05-28

Qu'est-ce que MySqli :: $ info?

MySQLI :: $ info est une propriété en lecture seule qui renvoie les informations détaillées générées par la requête récemment exécutée. Il est généralement utilisé pour fournir des informations telles que le nombre de lignes affectées, les avertissements, etc. après la mise à jour , la suppression ou l'insertion ... sur l'instruction de mise à jour des clés en double .

 $mysqli = new mysqli('gitbox.net', 'user', 'password', 'database');
$mysqli->query("UPDATE users SET status = 'active' WHERE last_login > NOW() - INTERVAL 30 DAY");
echo $mysqli->info;

Cette propriété n'est valide qu'après un type spécifique de requête et ne renvoie que des informations significatives après l'exécution avec succès.


Questions et solutions fréquemment posées

1. RETOUR NULL OU VIDE STRING Lorsque vous accédez à MySQLI :: $ info

C'est le problème le plus courant. MySQLI :: $ info ne sera défini qu'après certaines requêtes spécifiques, telles que l'instruction de mise à jour . Si la requête ne produit aucune information supplémentaire, $ mysqli-> info renvoie une chaîne nulle ou vide.

Solution:

Avant d'utiliser, vérifiez le type de requête pour confirmer son applicabilité. Il est également recommandé de l'utiliser conjointement avec $ mysqli-> affecté_rows pour vous assurer que vous avez obtenu les commentaires corrects.

 $result = $mysqli->query("UPDATE users SET status = 'active' WHERE last_login > NOW() - INTERVAL 30 DAY");
if ($result) {
    echo "Nombre de lignes affectées: " . $mysqli->affected_rows . "\n";
    echo "Informations Complémentaires: " . ($mysqli->info ?? 'Aucune information') . "\n";
} else {
    echo "La requête a échoué: " . $mysqli->error;
}

2. Accéder à MySqli :: $ info après une défaillance de la requête entraîne une erreur

Si la requête ne parvient pas à s'exécuter, MySQLI :: $ Info existe toujours, mais son contenu n'est pas fiable. Si vous ne jugez pas les résultats de la requête et y accédez directement, vous pouvez obtenir des informations dénuées de sens ou incorrectes.

Solution:

Jugez toujours si la requête réussit d'abord, puis visitez mysqli :: $ info .

 if ($mysqli->query($sql) === false) {
    echo "erreur: " . $mysqli->error;
} else {
    echo "information: " . $mysqli->info;
}

3. Un codage ou un jeu de caractères incorrect provoque une exception à MySqli :: $ Info Content

Si le jeu de caractères pour la connexion de la base de données est mal défini, MySQLI :: $ info peut renvoyer des informations brouillées ou incomplètes.

Solution:

Assurez-vous que le jeu de caractères correct est défini immédiatement après la connexion à la base de données, par exemple:

 $mysqli->set_charset('utf8mb4');

Cela garantit que la chaîne renvoyée par MySQLI :: $ Info s'affiche correctement.


4. accès fréquent à mysqli :: $ info peut renvoyer les anciennes données

mysqli :: $ info est le résultat de la dernière requête réussie. Si une autre requête est exécutée au milieu, l'accès à la propriété peut renvoyer les résultats de la requête précédente, provoquant des malentendus.

Solution:

Assurez-vous qu'aucune autre requête non pertinente n'est insérée avant chaque accès à MySQLI :: $ info , ou uniquement accessible immédiatement après les requêtes pertinentes.


Conseils supplémentaires

  • Utilisez la gestion des exceptions : combinée avec mysqli_report (mysqli_report_error | mysqli_report_strict) , il peut attraper des erreurs de requête plus tôt et éviter les incompréhensions des informations d'erreur.

  • Jugement sur la valeur de retour de requête : Non seulement MySQLI :: $ Info Judges Results Results, mais il est préférable de combiner PECTACT_ROWS et Error pour un jugement complet.

  • Référence du document : en savoir plus sur la description officielle de la documentation de MySQLI :: $ info et comprenez les scénarios et les limitations auxquels il s'applique.


En résumé, MySqli :: $ info est une propriété pratique mais malsable. Jugez correctement les résultats de la requête et les utilisez en combinaison avec d'autres attributs MySQLI peuvent éviter efficacement les erreurs pendant l'utilisation.


 $mysqli = new mysqli('gitbox.net', 'user', 'password', 'database');
$mysqli->set_charset('utf8mb4');

$sql = "UPDATE users SET status = 'active' WHERE last_login > NOW() - INTERVAL 30 DAY";

if ($mysqli->query($sql) === false) {
    echo "查询erreur: " . $mysqli->error;
} else {
    echo "Nombre de lignes affectées: " . $mysqli->affected_rows . "\n";
    echo "Informations Complémentaires: " . ($mysqli->info ?? 'Aucune information') . "\n";
}