unsigned int mysql_num_fields(MYSQL_RES
          *result)
        
ou
          unsigned int mysql_num_fields(MYSQL *mysql)
        
          A segunda forma não funciona na versão 3.22.24 ou mais novas
          do MySQL. Para passar um argumento MYSQL*
          você de utilizar unsigned int
          mysql_field_count(MYSQL *mysql) em seu lugar.
        
Descrição
Retorna o número de colunas em um resultado.
          Note que você pode obter o número de colunas com um ponteiro
          para o conjunto de resultados ou para um manipulador (handle)
          de conexão. Você usaria o manipular de conexão se
          mysql_store_result() ou
          mysql_use_result() retorna
          NULL (então você não tem um ponteiro
          para o resultado). Neste caso, você pode chamar
          mysql_field_count() para determinar se
          mysql_store_result() não produziu um
          resultado vazio. Isto permite que o programa cliente tome a
          ação apropriada sem saber se a consulta foi uma instrução
          SELECT (ou do tipo
          SELECT). O exemplo mostrado abaixo ilustra
          como isto pode ser feito.
        
Valor Retornado
Um unsigned integer (inteiro sem sinal) representando o número de campos no conjunto de resultasdos.
Erros
Nenhum.
Exemplo
MYSQL_RES *result;
unsigned int num_fields;
unsigned int num_rows;
if (mysql_query(&mysql,query_string))
{
    // erro
}
else // query succeeded, process any data returned by it
{
    result = mysql_store_result(&mysql);
    if (result)  // existem resgitros
    {
        num_fields = mysql_num_fields(result);
        // retorna registros e chama mysql_free_result(result)
    }
    else  // mysql_store_result() retorna vazio; era esperado?
    {
        if (mysql_errno(&mysql))
  {
           fprintf(stderr, "Error: %s\n", mysql_error(&mysql));
  }
        else if (mysql_field_count(&mysql) == 0)
        {
            // consulta não retora dados
            // (ela não era um SELECT)
            num_rows = mysql_affected_rows(&mysql);
        }
    }
}
          Uma alternativa (se você souber qyue a sua consulta retornou
          um resultado) é substituir a chamada
          mysql_errno(&mysql) pela verificação
          de se mysql_field_count(&mysql) é = 0.
          Isto só acontece se alguma coisa der errado.
        
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.

