int
mysql_stmt_store_result(MYSQL_STMT *stmt)
Result sets are produced by calling
mysql_stmt_execute()
to
executed prepared statements for SQL statements such as
SELECT
,
SHOW
,
DESCRIBE
, and
EXPLAIN
. By default, result
sets for successfully executed prepared statements are not
buffered on the client and
mysql_stmt_fetch()
fetches
them one at a time from the server. To cause the complete
result set to be buffered on the client, call
mysql_stmt_store_result()
after binding data buffers with
mysql_stmt_bind_result()
and
before calling
mysql_stmt_fetch()
to fetch
rows. (For an example, see
Section 6.4.12, “mysql_stmt_fetch()”.)
mysql_stmt_store_result()
is
optional for result set processing, unless you will call
mysql_stmt_data_seek()
,
mysql_stmt_row_seek()
, or
mysql_stmt_row_tell()
. Those
functions require a seekable result set.
It is unnecessary to call
mysql_stmt_store_result()
after executing an SQL statement that does not produce a
result set, but if you do, it does not harm or cause any
notable performance problem. You can detect whether the
statement produced a result set by checking whether
mysql_stmt_result_metadata()
returns NULL
. For more information, refer
to Section 6.4.24, “mysql_stmt_result_metadata()”.
MySQL does not by default calculate
MYSQL_FIELD->max_length
for all
columns in
mysql_stmt_store_result()
because calculating this would slow down
mysql_stmt_store_result()
considerably and most applications do not need
max_length
. If you want
max_length
to be updated, you can call
mysql_stmt_attr_set(MYSQL_STMT,
STMT_ATTR_UPDATE_MAX_LENGTH, &flag)
to enable
this. See Section 6.4.3, “mysql_stmt_attr_set()”.
-
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.