Copyright (C) 2000-2012 |
GNU Info (mysql.info)mysql_field_count`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 |