Position actuelle: Accueil> Derniers articles> Lorsque vous utilisez MySQLI_RESULT, comment déterminez-vous que le résultat de la requête est vide et le traite correctement?

Lorsque vous utilisez MySQLI_RESULT, comment déterminez-vous que le résultat de la requête est vide et le traite correctement?

M66 2025-06-15

L'extension MySQL est un choix courant lors de l'utilisation de PHP pour manipuler les bases de données MySQL. Après avoir exécuté une requête, vous obtenez généralement un objet mysqli_result , mais de nombreux développeurs ignorent un lien important: juger si le résultat de la requête est vide. Cet article expliquera en détail comment juger et gérer correctement la situation où le résultat de la requête est vide.

1. Exemples de requête de base

Regardons d'abord un exemple de requête simple:

 <?php
$mysqli = new mysqli("localhost", "username", "password", "database");

if ($mysqli->connect_errno) {
    die("Échec de la connexion: " . $mysqli->connect_error);
}

$sql = "SELECT * FROM users WHERE status = 'active'";
$result = $mysqli->query($sql);

if (!$result) {
    die("La requête a échoué: " . $mysqli->error);
}

// Voici la partie clé:Vérifiez s&#39;il y a des résultats
if ($result->num_rows === 0) {
    echo "Aucun utilisateur qui répond aux critères n&#39;a été trouvé。";
} else {
    while ($row = $result->fetch_assoc()) {
        echo "nom d&#39;utilisateur: " . htmlspecialchars($row['username']) . "<br>";
    }
}

$result->free();
$mysqli->close();
?>

2. Description des points clés

1 ?? Vérifiez si $ le résultat est faux
Cela indique qu'une erreur s'est produite dans l'instruction de requête SQL elle-même, comme une erreur de syntaxe ou le tableau n'existe pas. utiliser:

 if (!$result) {
    // La requête a échoué,Gestion des erreurs
}

2 ?? Vérifiez $ Result-> num_rows
Lorsque la requête réussit mais qu'aucune ligne correspondante n'est adaptée, NUM_ROWS est 0 . utiliser:

 if ($result->num_rows === 0) {
    // La requête est vide,Gérer aucun résultat
}

3 ?? Évitez d'utiliser fetch_assoc () directement pour déterminer les résultats vides <br> Beaucoup de gens l'utilisent directement:

 if ($row = $result->fetch_assoc()) { ... }

Cette méthode n'entrera pas dans la boucle sans résultats, mais il est impossible de distinguer explicitement s'il s'agit d'un "résultat vide" ou "il y a une ligne mais la condition n'est pas remplie". Il est recommandé de vérifier explicitement num_rows .

3. Comment gérer la situation sans résultats avec élégance

Dans les projets réels, il ne suffit pas de produire directement "aucun résultat". Vous pouvez optimiser selon le scénario, tel que:

  • Retourner à une page d'invite amicale;

  • Enregistrer les journaux pour faciliter la post-analyse;

  • Sautez dans d'autres pages, telles que:

 if ($result->num_rows === 0) {
    header("Location: https://m66.net/no-results.html");
    exit;
}