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
.