MYSQL_ROW mysql_fetch_row(MYSQL_RES *result)
      
Description
        Retrieves the next row of a result set. When used after
        mysql_store_result(),
        mysql_fetch_row() returns
        NULL when there are no more rows to retrieve.
        When used after
        mysql_use_result(),
        mysql_fetch_row() returns
        NULL when there are no more rows to retrieve
        or if 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.
      
Return Values
        A MYSQL_ROW structure for the next row.
        NULL if there are no more rows to retrieve or
        if an error occurred.
      
Errors
        Note that error is not reset between calls to
        mysql_fetch_row()
      
The connection to the server was lost during the query.
An unknown error occurred.
Example
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");
}


User Comments
MYSQL_ROW is an array of null-terminated strings. (However, you cannot treat these as null-terminated strings if field values may contain binary data, because such values may contain null bytes internally.) You can use the row data in any function expecting a null-terminated string.
Example:
MYSQL_ROW row = mysql_fetch_row(...);
unsigned long* len = mysql_fetch_lengths(...);
const char* end;
if(row[0]) {
long x = strtol(row[0], &end, 10);
if(end - row[0] != len[0]) {
// strtol found an invalid character or the data contained a null-byte.
}
}
Add your own comment.