unsigned int mysql_field_count(MYSQL
*mysql)
Si vous utilisez une version de MySQL plus ancienne que la
3.22.24, vous devez utiliser unsigned int
mysql_num_fields(MYSQL *mysql)
.
Description
Retourne le nombre de colonnes pour la requête la plus récente de la connexion.
L'utilisation normale de cette fonction est lorsque
mysql_store_result()
a retourné
NULL
(et que vous n'avez donc pas de
pointeur sur jeu de résultats). Dans ce cas, vous pouvez
appeler mysql_field_count()
pour
déterminer si mysql_store_result()
aurait
dû produire un résultat non-vide. Cela permet au programme
client d'entreprendre les bonnes actions sans savoir si la
requête était un SELECT
(ou équivalent).
L'exemple suivant illustre comment cela peut être fait.
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 // requête bonne, traitons les données qu'elle renvoit { result = mysql_store_result(&mysql); if (result) // il y a des lignes { num_fields = mysql_num_fields(result); // récupère les lignes, puis appele mysql_free_result(result) } else // mysql_store_result() n'a rien retourné; est-ce normal ? { if(mysql_field_count(&mysql) == 0) { // la requête ne retourne aucune donnée // (ce n'était pas un SELECT) num_rows = mysql_affected_rows(&mysql); } else // mysql_store_result() aurait du retourner des données { fprintf(stderr, "Erreur : %s\n", mysql_error(&mysql)); } } }
Une alternative est de remplacer l'appel à
mysql_field_count(&mysql)
par
mysql_errno(&mysql)
. Dans ce cas, vous
vérifiez directement les erreurs à partir de
mysql_store_result()
plutôt qu'à partir
de mysql_field_count()
si la requête
était un SELECT
.
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.