mysql_field_count()


unsigned int mysql_field_count(MYSQL *mysql)

Se você estiver utilizando uma versão anterior a versão 3.22.24 do MariaDB, você deve utilizar unsigned int mysql_num_fields(MYSQL *mysql).

Descrição

Retorna o número de colunas para a consulta mais recente na conexão.

Normalmente esta função é utilizada quando mysql_store_result() retorna NULL (então você não possui um apontador 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 aprpriada sem saber se a consulta foi uma instrução SELECT (ou do mesmo tipo). O exemplo mostrado aqui 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 campo em um resultado.

Erros

Nenhum.

Exemplo

MYSQL_RES *result;
unsigned int num_fields;
unsigned int num_rows;
if (mysql_query(&mysql,query_string))
{
 // error
}
else // query succeeded, process any data returned by it
{
 result = mysql_store_result(&mysql);
 if (result) // there are rows
 {
 num_fields = mysql_num_fields(result);
 // retrieve rows, then call mysql_free_result(result)
 }
 else // mysql_store_result() returned nothing; should it have?
 {
 if(mysql_field_count(&mysql) == 0)
 {
 // query does not return data
 // (it was not a SELECT)
 num_rows = mysql_affected_rows(&mysql);
 }
 else // mysql_store_result() should have returned data
 {
 fprintf(stderr, 'Error: %s\n', mysql_error(&mysql));
 }
 }
}

Uma alternativa é substituir a chamada mysql_field_count(&mysql) com mysql_errno(&mysql). Neste caso, você está verificando diretamente um erro de mysql_store_result() em vez de conferir o valor de mysql_field_count() se a instrução foi uma SELECT.

Retornar