GNU Info

Info Node: (mysql.info)mysql_field_count

(mysql.info)mysql_field_count


Next: mysql_field_seek Prev: mysql_fetch_row Up: C API functions
Enter node , (file) or (file)node

`mysql_field_count()'
.....................

`unsigned int mysql_field_count(MYSQL *mysql)'

If you are using a version of MySQL earlier than Version 3.22.24, you
should use `unsigned int mysql_num_fields(MYSQL *mysql)' instead.

Description
...........

Returns the number of columns for the most recent query on the
connection.

The normal use of this function is when `mysql_store_result()' returned
`NULL' (and thus you have no result set pointer).  In this case, you
can call `mysql_field_count()' to determine whether or not
`mysql_store_result()' should have produced a non-empty result.  This
allows the client program to take proper action without knowing whether
or not the query was a `SELECT' (or `SELECT'-like) statement.  The
example shown below illustrates how this may be done.

Note: `NULL mysql_store_result()'.

Return Values
.............

An unsigned integer representing the number of fields in a result set.

Errors
......

None.

Example
.......

     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));
             }
         }
     }

An alternative is to replace the `mysql_field_count(&mysql)' call with
`mysql_errno(&mysql)'.  In this case, you are checking directly for an
error from `mysql_store_result()' rather than inferring from the value
of `mysql_field_count()' whether or not the statement was a `SELECT'.


automatically generated by info2www version 1.2.2.9