MYSQL_ROW
mysql_fetch_row(MYSQL_RES *result)
mysql_fetch_row()
is a
synchronous function. Its asynchronous counterpart is
mysql_fetch_row_nonblocking()
,
for use by applications that require asynchronous
communication with the server. See
Chapter 7, C API Asynchronous Interface.
mysql_fetch_row()
retrieves
the next row of a result set:
When used after
mysql_store_result()
ormysql_store_result_nonblocking()
,mysql_fetch_row()
returnsNULL
if there are no more rows to retrieve.When used after
mysql_use_result()
,mysql_fetch_row()
returnsNULL
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()
ormysql_store_result_nonblocking()
,mysql_fetch_row()
returnsNULL
if there are no more rows to retrieve.When used after
mysql_use_result()
,mysql_fetch_row()
returnsNULL
if there are no more rows to retrieve or an error occurred. To determine whether an error occurred, check whethermysql_error()
returns a nonempty string ormysql_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");
}