Note: The API for prepared statements is still subject to revision. This information is provided for early adopters, but please be aware that the API may change.
The functions available for prepared statement processing are summarised here and described in greater detail in a later section. See section 9.1.7 C API Prepared Statement Function Descriptions.
Function | Description |
mysql_prepare() | Prepares an SQL string for execution. |
mysql_param_count() | Returns the number of parameters in a prepared SQL statement. |
mysql_prepare_result() | Returns prepared statement metadata in the form of a result set. |
mysql_bind_param() | Associates application data buffers with the parameter markers in a prepared SQL statement. |
mysql_execute() | Executes the prepared statement. |
mysql_stmt_affected_rows() |
Returns the number of rows changes, deleted, or inserted by the last
UPDATE , DELETE , or INSERT query.
|
mysql_bind_result() | Associates application data buffers with columns in the result set. |
mysql_stmt_store_result() | Retrieves the complete result set to the client. |
mysql_stmt_data_seek() | Seeks to an arbitrary row number in a statement result set. |
mysql_stmt_row_seek() |
Seeks to a row offset in a statement result set, using value returned from
mysql_stmt_row_tell() .
|
mysql_stmt_row_tell() | Returns the statement row cursor position. |
mysql_stmt_num_rows() | Returns total rows from the statement buffered result set. |
mysql_fetch() | Fetches the next row of data from the result set and returns data for all bound columns. |
mysql_stmt_close() | Frees memory used by prepared statement. |
mysql_stmt_errno() | Returns the error number for the last statement execution. |
mysql_stmt_error() | Returns the error message for the last statement execution. |
mysql_stmt_sqlstate() | Returns the SQLSTATE error code for the last statement execution. |
mysql_send_long_data() | Sends long data in chunks to server. |
Call mysql_prepare()
to prepare and initialise the statement
handle, mysql_bind_param()
to supply the parameter
data, and mysql_execute()
to execute the query. You can
repeat the mysql_execute()
by changing parameter values in the
respective buffers supplied through mysql_bind_param()
.
If the query is a SELECT
statement or any other query that produces
a result set, mysql_prepare()
will also return the result
set metadata information in the form of a MYSQL_RES
result set
through mysql_prepare_result()
.
You can supply the result buffers using mysql_bind_result()
, so
that the mysql_fetch()
will automatically return data to these
buffers. This is row-by-row fetching.
You can also send the text or binary data in chunks to server using
mysql_send_long_data()
, by specifying the option is_long_data=1
or length=MYSQL_LONG_DATA
or -2
in the MYSQL_BIND
structure supplied with mysql_bind_param()
.
When statement execution has been completed, the statement handle must be
closed using mysql_stmt_close()
so that all resources associated
with it can be freed.
If you obtained a SELECT
statement's result set metadata by calling
mysql_prepare_result()
, you should also free it using
mysql_free_result()
.
To prepare and execute a statement, an application follows these steps:
mysql_prepare()
and pass it a string containing the SQL
statement. For a successful prepare operation, mysql_prepare()
returns
a valid statement handle to the application.
mysql_prepare_result()
to obtain the result set metadata. This metadata is itself in the form of
result set, albeit a separate one from the one that contains the rows returned
by the query. The metadata result set indicates how many columns are in the
result and contains information about each column.
mysql_bind_param()
. All
parameters must be set. Otherwise, query execution will return an error or
produce unexpected results.
mysql_execute()
to execute the statement.
mysql_bind_result()
.
mysql_fetch()
repeatedly until no more rows are found.
When mysql_prepare()
is called, the MySQL client/server protocol
performs these actions:
When mysql_execute()
is called, the MySQL client/server protocol
performs these actions:
When mysql_fetch()
is called, the MySQL client/server protocol
performs these actions:
You can get the statement error code, error message, and SQLSTATE value using
mysql_stmt_errno()
, mysql_stmt_error()
, and
mysql_stmt_sqlstate()
, respectively.