unsigned int mysql_num_fields(MYSQL_RES
          *result)
        
ou
          unsigned int mysql_num_fields(MYSQL *mysql)
        
          La seconde forme ne fonctionne plus à partir de la version
          3.22.24 de MySQL. Pour passer un argument
          MYSQL*, vous devez utiliser la fonction
          unsigned int mysql_field_count(MYSQL
          *mysql) à la place.
        
Description
Retourne le nombre de colonnes dans un jeu de résultats.
          Notez que vous pouvez obtenir le nombre de colonnes soit à
          partir d'un pointeur sur résultat, soit d'un pointeur de
          connexion. Vous utiliserez le pointeur de connexion si
          mysql_store_result() ou
          mysql_use_result() ont retournés
          NULL (et que donc, vous n'avez pas de
          pointeur sur résultat). Dans ce cas, vous pouvez appeler
          mysql_field_count() pour déterminer si
          mysql_store_result() aurait du retourner un
          résultat non-vide. Cela permet au client d'effectuer les
          bonnes actions sans savoir si la requête était un
          SELECT (ou équivalent). L'exemple
          ci-dessous montre comment cela doit être utilisé.
        
Valeur de retour
Un entier non-signé représentant le nombre de champs dans un jeu de résultats.
Erreurs
Aucune.
Exemple
MYSQL_RES *result;
unsigned int num_fields;
unsigned int num_rows;
if (mysql_query(&mysql,query_string))
{
    // erreur
}
else // la requête fonctionne, on s'occupe des données
{
    result = mysql_store_result(&mysql);
    if (result)  // il y a des lignes
    {
        num_fields = mysql_num_fields(result);
        // recupérer les lignes, puis appeler mysql_free_result(result)
    }
    else  // mysql_store_result() n'a rien retourné ! pourquoi ?
    {
        if (mysql_errno(&mysql))
	{
           fprintf(stderr, "Erreur : %s\n", mysql_error(&mysql));
	}
        else if (mysql_field_count(&mysql) == 0)
        {
            // la requête ne retourne pas de données
            // (ce n'etait pas un SELECT)
            num_rows = mysql_affected_rows(&mysql);
        }
    }
}
          Une alternative (si vous savez que votre requête aurait du
          retourner des résultats) est de remplacer l'appel à
          mysql_errno(&mysql) par un test sur la
          nullité de mysql_field_count(&mysql).
          Cela n'arrive que si un problème a été rencontré.
        
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.

