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.
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;
}
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;
}
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.
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.
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";
}