mysql_num_fields()


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 MariaDB. 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.

See "Porque Algumas Vezes mysql_store_result() Retorna NULL Após mysql_query() Returnar com Sucesso?".

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.

Retornar