mysql_real_query()
int mysql_real_query(MYSQL *mysql, const char
*stmt_str, unsigned long length)
Description
Executes the SQL statement pointed to by
stmt_str, which should be a string
length bytes long. Normally, the string must
consist of a single SQL statement and you should not add a
terminating semicolon (“;”) or
\g to the statement. If multiple-statement
execution has been enabled, the string can contain several
statements separated by semicolons. See
Section 26.2.9, “C API Handling of Multiple Statement Execution”.
mysql_query() cannot be used
for statements that contain binary data; you must use
mysql_real_query() instead.
(Binary data may contain the
“\0” character, which
mysql_query() interprets as the
end of the statement string.) In addition,
mysql_real_query() is faster
than mysql_query() because it
does not call strlen() on the statement
string.
If you want to know whether the statement should return a result
set, you can use
mysql_field_count() to check
for this. See Section 26.2.3.22, “mysql_field_count()”.
Return Values
Zero if the statement was successful. Non-zero if an error occurred.
Errors
CR_COMMANDS_OUT_OF_SYNC
Commands were executed in an improper order.
CR_SERVER_GONE_ERROR
The MySQL server has gone away.
CR_SERVER_LOST
The connection to the server was lost during the query.
CR_UNKNOWN_ERROR
An unknown error occurred.

User Comments
Connection-lost behavior:
If you lose your connection to the database, subsequent calls to mysql_real_query will attempt to reconnect.
The implicit reconnect will not restore settings like "set names utf8;" and may therefor cause subsequent data corruption by using and expecting the wrong character set.
Add your own comment.