MySqli_error () est l'une des fonctions de gestion des erreurs les plus familières pour les développeurs. Sa fonction est de renvoyer une chaîne décrivant l'erreur lorsque l'opération de la base de données échoue. Par exemple, lors de l'exécution d'une instruction SQL incorrecte:
$mysqli = new mysqli("localhost", "user", "password", "database");
$sql = "SELEC * FROM users"; // Écrit par inadvertance SELECT
$result = $mysqli->query($sql);
if (!$result) {
echo "SQL L'exécution a échoué: " . mysqli_error($mysqli);
}
La sortie sera un message d'erreur comme celui-ci:
SQL L'exécution a échoué: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELEC * FROM users' at line 1
Ceci est utile pour positionner les erreurs de syntaxe.
Contrairement à mysqli_error () , MySQLI :: $ info fournit plus d'informations contextuelles sur les résultats du traitement des instructions après la réalisation de l'instruction SQL. Surtout lorsque vous exécutez des instructions telles que l'insertion , la mise à jour , la suppression, etc., il peut vous dire combien de lignes sont affectées, que les lignes en double soient ignorées, etc.
Par exemple:
$mysqli = new mysqli("localhost", "user", "password", "database");
$sql = "UPDATE users SET status='active' WHERE last_login < '2024-01-01'";
$mysqli->query($sql);
echo "Détails d'impact: " . $mysqli->info;
Les sorties possibles sont similaires:
Détails d'impact: Rows matched: 3 Changed: 2 Warnings: 0
Cela signifie qu'un total de 3 lignes correspondaient, mais seulement 2 lignes ont été réellement modifiées.
Lors de l'exécution d'instructions SQL, vous pouvez utiliser ces deux fonctions ensemble: si l'instruction échoue, utilisez mysqli_error () pour obtenir les informations d'erreur; Si l'exécution est réussie, utilisez MySQLI :: $ info pour obtenir les détails d'exécution. Cette méthode convient au débogage, à la journalisation et même à l'affichage des résultats de l'opération dans le panneau de gestion des antécédents.
Une fonction d'encapsulation typique est la suivante:
function executeQuery($mysqli, $sql) {
if ($mysqli->query($sql) === TRUE) {
return [
'success' => true,
'info' => $mysqli->info
];
} else {
return [
'success' => false,
'error' => mysqli_error($mysqli)
];
}
}
Exemple d'appel:
$response = executeQuery($mysqli, "UPDATE users SET status='inactive' WHERE id IN (1,2,3)");
if ($response['success']) {
echo "Mettre à jour avec succès,Les détails sont les suivants:" . $response['info'];
} else {
echo "La mise à jour a échoué,message d'erreur:" . $response['error'];
}
Sortie (sur succès):
Mettre à jour avec succès,Les détails sont les suivants:Rows matched: 3 Changed: 3 Warnings: 0
Sortie (en panne):
La mise à jour a échoué,message d'erreur:Unknown column 'statuz' in 'field list'
Tâches de migration et de synchronisation des données <br> Lors de la rédaction d'une grande quantité de données, savoir si les données sont mises à jour ou sautées sont très essentielles pour juger si la tâche est réussie ou non.
Système de journal dans les coulisses <br> Pour les administrateurs, il est non seulement nécessaire de savoir si une opération réussit ou échoue, mais aussi de comprendre le nombre spécifique d'enregistrements qui l'affectent.
Tests automatisés <br> Lorsque certaines lignes devraient affecter, l'utilisation de ces deux fonctions en combinaison peut vérifier l'exactitude des instructions SQL.