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 20.9.12, “C API Support for 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 20.9.3.22, “mysql_field_count()”.
      
Return Values
Zero if the statement was successful. Nonzero if an error occurred.
Errors
Commands were executed in an improper order.
The MySQL server has gone away.
The connection to the server was lost during the query.
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.