MYSQL_RES *mysql_store_result(MYSQL *mysql)
Description
After invoking mysql_query()
or
mysql_real_query()
, you must
call mysql_store_result()
or
mysql_use_result()
for every
statement that successfully produces a result set
(SELECT
,
SHOW
,
DESCRIBE
,
EXPLAIN
,
CHECK TABLE
, and so forth). You
must also call
mysql_free_result()
after you
are done with the result set.
You don't have to call
mysql_store_result()
or
mysql_use_result()
for other
statements, but it does not do any harm or cause any notable
performance degradation if you call
mysql_store_result()
in all
cases. You can detect whether the statement has a result set by
checking whether
mysql_store_result()
returns a
nonzero value (more about this later on).
If you enable multiple-statement support, you should retrieve
results from calls to
mysql_query()
or
mysql_real_query()
by using a
loop that calls
mysql_next_result()
to determine
whether there are more results. For an example, see
Section 17.6.12, “C API Support for Multiple Statement Execution”.
If you want to know whether a statement should return a result
set, you can use
mysql_field_count()
to check for
this. See Section 17.6.3.22, “mysql_field_count()
”.
mysql_store_result()
reads the
entire result of a query to the client, allocates a
MYSQL_RES
structure, and places the result
into this structure.
mysql_store_result()
returns a
null pointer if the statement didn't return a result set (for
example, if it was an INSERT
statement).
mysql_store_result()
also
returns a null pointer if reading of the result set failed. You
can check whether an error occurred by checking whether
mysql_error()
returns a nonempty
string, mysql_errno()
returns
nonzero, or mysql_field_count()
returns zero.
An empty result set is returned if there are no rows returned. (An empty result set differs from a null pointer as a return value.)
After you have called
mysql_store_result()
and gotten
back a result that isn't a null pointer, you can call
mysql_num_rows()
to find out how
many rows are in the result set.
You can call mysql_fetch_row()
to fetch rows from the result set, or
mysql_row_seek()
and
mysql_row_tell()
to obtain or
set the current row position within the result set.
Return Values
A MYSQL_RES
result structure with the
results. NULL
(0) if an error occurred.
Errors
mysql_store_result()
resets
mysql_error()
and
mysql_errno()
if it succeeds.
Commands were executed in an improper order.
Out of memory.
The MySQL server has gone away.
The connection to the server was lost during the query.
An unknown error occurred.
User Comments
Add your own comment.