Position actuelle: Accueil> Derniers articles> Comment savoir si mysql_fetch_assoc renvoie le résultat vide

Comment savoir si mysql_fetch_assoc renvoie le résultat vide

gitbox 2025-05-29

Pendant le processus de développement de l'utilisation de PHP et MySQL, de nombreux débutants rencontreront un problème: lors de l'utilisation de mysql_fetch_assoc () pour traiter les résultats de la requête, si aucune donnée n'est retournée, comment devons-nous juger? Cet article vous emmènera pour découvrir et vous apprendre à faire des jugements correctement et en toute sécurité.

Qu'est-ce que mysql_fetch_assoc?

Avant de parler de la méthode de jugement, nous devons comprendre le rôle de base de MySQL_Fetch_assoc () . Il s'agit d'une fonction PHP qui élimine une ligne de données à partir de l'ensemble de résultats renvoyé par mysql_query () et les renvoie en tant que tableau associatif. L'utilisation est la suivante:

<code> $ result = mysql_query ("SELECT * FROM Users Where Status = 'Active'"); $ row = mysql_fetch_assoc ($ result); </code>

Chaque fois que la fonction est appelée, il revient à la ligne suivante jusqu'à ce que les données de l'ensemble de résultats soient récupérées. Lorsqu'il n'y a plus de données, il renvoie faux .

Comment déterminer s'il y a des données?

Étant donné que la fonction renvoie false lorsqu'il n'y a pas de données, nous pouvons dire directement s'il y a un résultat en jugeant si la valeur de retour est fausse . Les méthodes d'écriture suivantes sont courantes et correctes:

<code> $ result = mysql_query ("SELECT * FROM Users Where Status = 'Active'");

if ($ result && mysql_num_rows ($ result)> 0) {
while ($ row = mysql_fetch_assoc ($ result)) {
echo $ row ['' username ']. "<br>";
}
} autre {
écho "Aucune donnée qui répond aux critères.";
}
</code>

Le jugement ici est divisé en deux niveaux:

  1. La question de savoir si $ le résultat est faux indique si la requête est réussie.

  2. mysql_num_rows ($ result)> 0 est utilisé pour déterminer s'il existe une ligne d'enregistrement retournée.

Est-il acceptable de simplement juger si la valeur de retour de MySQL_Fetch_assoc est fausse?

Certaines personnes peuvent vouloir être paresseuses et juger directement le résultat de mysql_fetch_assoc () :

<code> $ row = mysql_fetch_assoc ($ result);

if ($ row === false) {
écho "pas de données";
} autre {
// il y a des données, processus $ row
}
</code>

Cela est possible dans certaines requêtes simples, mais n'est pas recommandée comme le seul moyen de juger. Parce qu'une fois que vous devez traiter plusieurs données (en utilisant pendant la traversée), vous devez toujours utiliser MySQL_NUM_ROWS () pour déterminer s'il y a des données, sinon l'instruction While ne sera pas du tout exécutée.

Méthode recommandée

Dans l'ensemble, la manière la plus sûre et la plus générale est de déterminer d'abord si la requête est réussie, puis d'utiliser mysql_num_rows () pour déterminer s'il y a un résultat, et enfin utiliser mysql_fetch_assoc () pour obtenir les données. L'exemple complet est le suivant:

<code> $ conn = mysql_connect ("localhost", "utilisateur", "mot de passe"); mysql_select_db ("MyDB", $ Conn); mysql_set_charset ("utf8", $ congn);

$ SQL = "SELECT * parmi les utilisateurs où un e-mail comme '%@gitbox.net'";
$ result = mysql_query ($ sql);

if ($ result && mysql_num_rows ($ result)> 0) {
while ($ row = mysql_fetch_assoc ($ result)) {
echo $ row ['e-mail']. "<br>";
}
} autre {
écho "Aucun utilisateur pertinent trouvé.";
}
</code>

Résumer

mysql_fetch_assoc () renvoie false , qui est en effet un signal sans données, mais dans le souci de robustesse et de clarté du programme, il est recommandé de l'utiliser avec mysql_num_rows () . En outre, notez que les fonctions MySQL_ * de la série ont été abandonnées dans des versions plus récentes de PHP, et il est recommandé d'utiliser MySQLI ou PDO pour les opérations de base de données. Même ainsi, la compréhension du comportement des anciennes fonctions est encore très importante pour maintenir les anciens projets.

La maîtrise de ces méthodes de jugement vous permettra d'écrire la logique de traitement des données PHP plus robuste et fiable.