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.