Curso de MySQL
Consultas, lista de correo 'C++ Con Clase' 'MySQL Con Clase' página de entrada Tabla de contenido Contactar con Webmaster
Curso Sentencias Funciones API C

API C

Funciones API C

mysql_affected_rows mysql_autocommit mysql_change_user mysql_character_set_name mysql_close mysql_commit mysql_connect mysql_create_db mysql_data_seek mysql_debug mysql_drop_db mysql_dump_debug_info mysql_eof mysql_errno mysql_error mysql_escape_string mysql_fetch_field mysql_fetch_fields mysql_fetch_field_direct mysql_fetch_lengths mysql_fetch_row mysql_field_seek mysql_field_tell mysql_free_result mysql_get_client_info mysql_get_client_version mysql_get_host_info mysql_get_proto_info mysql_get_server_info mysql_get_server_version mysql_hex_string mysql_info mysql_init mysql_insert_id mysql_kill mysql_library_end mysql_library_init mysql_list_dbs mysql_list_fields mysql_list_processes mysql_list_tables mysql_more_results mysql_next_result mysql_num_fields mysql_num_rows mysql_options mysql_ping mysql_query mysql_real_connect mysql_real_escape_string mysql_real_query mysql_reload mysql_rollback mysql_row_seek mysql_row_tell mysql_select_db mysql_set_server_option mysql_shutdown mysql_sqlstate mysql_ssl_set mysql_stat mysql_store_result mysql_thread_id mysql_use_result mysql_warning_count

Tipos API C

MYSQL MYSQL_DATA MYSQL_FIELD MYSQL_RES MYSQL_ROW MYSQL_ROWS

Función mysql_field_count()

unsigned int mysql_field_count(MYSQL *mysql)

Si se está usando una versión de MySQL previa a la 3.22.24, se debe usar en su lugar unsigned int mysql_num_fields(MYSQL *mysql).

Devuelve el número de columnas para la consulta más reciente de la conexión mysql.

El uso habitual de esta función es cuando mysql_store_result() devuelve NULL (y entonces no se dispone de un puntero al conjunto de resultados). En ese caso, se puede llamar a mysql_field_count() para determinar si mysql_store_result() debería haber producido un resultado no vacío. Esto permite al programa cliente tomar las acciones adecuadas sin saber si la consulta fue una sentencia SELECT (o parecida). El ejemplo mostrado aquí ilustra como puede hacerse esto.

Ver mysql_store_result() para ver por qué a veces esta función devuelve NULL después de que mysql_query() retorne con éxito.

Valores de retorno  

Un entero sin signo que representa el número de columnas en el conjunto de resultados.

Errores  

Ninguno

Ejemplo  

MYSQL_RES *result;
unsigned int num_fields;
unsigned int num_rows;

if (mysql_query(&mysql,query_string))
{
    // error
}
else // consulta exitosa, procesar cualquier dato retornado
{
    result = mysql_store_result(&mysql);
    if (result)  // there are rows
    {
        num_fields = mysql_num_fields(result);
        // recuperar filas, y después llamar a mysql_free_result(result)
    }
    else  // mysql_store_result() no ha devuelto nada; ¿debería haberlo hecho?
    {
        if(mysql_field_count(&mysql) == 0)
        {
            // la consulta no devuelve datos
            // (no fue un SELECT)
            num_rows = mysql_affected_rows(&mysql);
        }
        else // mysql_store_result() ha devuelto datos
        {
            fprintf(stderr, "Error: %s\n", mysql_error(&mysql));
        }
    }
}

Una alternativa consiste en reemplazar la llamada a mysql_field_count(&mysql) con mysql_errno(&mysql). En ese caso, se estará comprobando de forma directa un error de mysql_store_result() en lugar de deducir del valor de retorno de mysql_field_count() si la sentencia fue un SELECT.