MySQL 5.7 C API Developer Guide
MYSQL_ROW mysql_fetch_row(MYSQL_RES *result)
mysql_fetch_row() retrieves
the next row of a result set:
When used after
mysql_store_result(),
mysql_fetch_row() returns
NULL if there are no more rows to
retrieve.
When used after
mysql_use_result(),
mysql_fetch_row() returns
NULL if there are no more rows to
retrieve or an error occurred.
The number of values in the row is given by
mysql_num_fields(result). If
row holds the return value from a call to
mysql_fetch_row(), pointers to
the values are accessed as row[0] to
row[mysql_num_fields(result)-1].
NULL values in the row are indicated by
NULL pointers.
The lengths of the field values in the row may be obtained by
calling mysql_fetch_lengths().
Empty fields and fields containing NULL
both have length 0; you can distinguish these by checking the
pointer for the field value. If the pointer is
NULL, the field is NULL;
otherwise, the field is empty.
A MYSQL_ROW structure for the next row, or
NULL. The meaning of a
NULL return depends on which function was
called preceding
mysql_fetch_row():
When used after
mysql_store_result(),
mysql_fetch_row() returns
NULL if there are no more rows to
retrieve.
When used after
mysql_use_result(),
mysql_fetch_row() returns
NULL if there are no more rows to
retrieve or an error occurred. To determine whether an
error occurred, check whether
mysql_error() returns a
nonempty string or
mysql_errno() returns
nonzero.
Errors are not reset between calls to
mysql_fetch_row()
The connection to the server was lost during the query.
An unknown error occurred.
MYSQL_ROW row;
unsigned int num_fields;
unsigned int i;
num_fields = mysql_num_fields(result);
while ((row = mysql_fetch_row(result)))
{
unsigned long *lengths;
lengths = mysql_fetch_lengths(result);
for(i = 0; i < num_fields; i++)
{
printf("[%.*s] ", (int) lengths[i],
row[i] ? row[i] : "NULL");
}
printf("\n");
}