Copyright (C) 2000-2012 |
GNU Info (mysql.info)mysql_num_fields`mysql_num_fields()' .................... `unsigned int mysql_num_fields(MYSQL_RES *result)' or `unsigned int mysql_num_fields(MYSQL *mysql)' The second form doesn't work on MySQL Version 3.22.24 or newer. To pass a `MYSQL*' argument, you must use `unsigned int mysql_field_count(MYSQL *mysql)' instead. Description ........... Returns the number of columns in a result set. Note that you can get the number of columns either from a pointer to a result set or to a connection handle. You would use the connection handle if `mysql_store_result()' or `mysql_use_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_errno(&mysql)) { fprintf(stderr, "Error: %s\n", mysql_error(&mysql)); } else if (mysql_field_count(&mysql) == 0) { // query does not return data // (it was not a SELECT) num_rows = mysql_affected_rows(&mysql); } } } An alternative (if you KNOW that your query should have returned a result set) is to replace the `mysql_errno(&mysql)' call with a check if `mysql_field_count(&mysql)' is = 0. This will only happen if something went wrong. automatically generated by info2www version 1.2.2.9 |