bool
mysql_stmt_send_long_data(MYSQL_STMT *stmt,
                          unsigned int parameter_number,
                          const char *data,
                          unsigned long length)
          Enables an application to send parameter data to the server in
          pieces (or “chunks”). Call this function after
          mysql_stmt_bind_param() or
          mysql_stmt_bind_named_param()
          and before
          mysql_stmt_execute(). It can
          be called multiple times to send the parts of a character or
          binary data value for a column, which must be one of the
          TEXT or
          BLOB data types.
        
          parameter_number indicates which parameter
          to associate the data with. Parameters are numbered beginning
          with 0. data is a pointer to a buffer
          containing data to be sent, and length
          indicates the number of bytes in the buffer.
        
            The next
            mysql_stmt_execute() call
            ignores the bind buffer for all parameters that have been
            used with
            mysql_stmt_send_long_data()
            since last
            mysql_stmt_execute() or
            mysql_stmt_reset().
          
          To reset/forget the sent data, call
          mysql_stmt_reset(). See
          Section 6.4.23, “mysql_stmt_reset()”.
        
          The max_allowed_packet system
          variable controls the maximum size of parameter values that
          can be sent with
          mysql_stmt_send_long_data().
        
- 
The parameter does not have a string or binary type. 
- 
Invalid parameter number. 
- 
Commands were executed in an improper order. 
- 
The MySQL server has gone away. 
- 
Out of memory. 
- 
An unknown error occurred. 
          The following example demonstrates how to send the data for a
          TEXT column in chunks. It
          inserts the data value 'MySQL - The most popular Open
          Source database' into the
          text_column column. The
          mysql variable is assumed to be a valid
          connection handler.
        
#define INSERT_QUERY "INSERT INTO \
                      test_long_data(text_column) VALUES(?)"
MYSQL_BIND bind[1];
long       length;
stmt = mysql_stmt_init(mysql);
if (!stmt)
{
  fprintf(stderr, " mysql_stmt_init(), out of memory\n");
  exit(0);
}
if (mysql_stmt_prepare(stmt, INSERT_QUERY, strlen(INSERT_QUERY)))
{
  fprintf(stderr, "\n mysql_stmt_prepare(), INSERT failed");
  fprintf(stderr, "\n %s", mysql_stmt_error(stmt));
  exit(0);
}
 memset(bind, 0, sizeof(bind));
 bind[0].buffer_type= MYSQL_TYPE_STRING;
 bind[0].length= &length;
 bind[0].is_null= 0;
/* Bind the buffers */
if (mysql_stmt_bind_named_param(stmt, bind, 1, NULL))
{
  fprintf(stderr, "\n param bind failed");
  fprintf(stderr, "\n %s", mysql_stmt_error(stmt));
  exit(0);
}
 /* Supply data in chunks to server */
 if (mysql_stmt_send_long_data(stmt,0,"MySQL",5))
{
  fprintf(stderr, "\n send_long_data failed");
  fprintf(stderr, "\n %s", mysql_stmt_error(stmt));
  exit(0);
}
 /* Supply the next piece of data */
 if (mysql_stmt_send_long_data(stmt,0,
           " - The most popular Open Source database",40))
{
  fprintf(stderr, "\n send_long_data failed");
  fprintf(stderr, "\n %s", mysql_stmt_error(stmt));
  exit(0);
}
 /* Now, execute the query */
 if (mysql_stmt_execute(stmt))
{
  fprintf(stderr, "\n mysql_stmt_execute failed");
  fprintf(stderr, "\n %s", mysql_stmt_error(stmt));
  exit(0);
}