mysql_stmt_prepare()
<<<
mysql_stmt_send_long_data() mysql_stmt_affected_rows()
>>>

21.2.7 Descriptions des fonctions C pour les requêtes préparées
21.2 API MySQL C
21 API MySQL
 Manuel de Référence MySQL 4.1 : Version Française

mysql_stmt_init()
mysql_stmt_bind_param()
mysql_stmt_bind_result()
mysql_stmt_execute()
mysql_stmt_fetch()
mysql_stmt_fetch_column()
mysql_stmt_result_metadata()
mysql_stmt_param_count()
mysql_stmt_param_metadata()
mysql_stmt_prepare()
->mysql_stmt_send_long_data()
mysql_stmt_affected_rows()
mysql_stmt_insert_id()
mysql_stmt_close()
mysql_stmt_data_seek()
mysql_stmt_errno()
mysql_stmt_error()
mysql_stmt_free_result()
mysql_stmt_num_rows()
mysql_stmt_reset()
mysql_stmt_row_seek()
mysql_stmt_row_tell()
mysql_stmt_sqlstate()
mysql_stmt_store_result()
mysql_stmt_attr_set()
mysql_stmt_attr_get()

21.2.7.11 mysql_stmt_send_long_data()

my_bool mysql_stmt_send_long_data(MYSQL_STMT *stmt, unsigned int parameter_number, const char *data, unsigned long length)

Description Permet à une application d'envoyer des données par parties au serveur. Cette fonction doit être utilisée pour envoyer des caractères ou du contenu binaire par partie dans une colonne (qui sera de type TEXT ou BLOB), avec un type de caractère ou de données binaires.

Le paramètre data est un pointeur sur un buffer qui contient les données pour le paramètre, représenté par parameter_number . Le paramètre length indique la quantité de données qui doit être envoyée, en octets.

Note : le prochain appel à mysql_stmt_execute() va ignorer les buffers de variables de requêtes, pour tous les paramètres qui ont été utilisé avec mysql_stmt_send_long_data() depuis le dernier appel à mysql_stmt_execute() ou mysql_stmt_reset() .

Si vous voulez remettre à zéro cette fonction, utilisez mysql_stmt_reset() . mysql_stmt_reset() .

Valeurs retournées Zéro si les données ont pu être envoyées au serveur. Non-nul si une erreur est survenue.

Erreurs
    CR_COMMANDS_OUT_OF_SYNC
    Commands were executed in an improper order : Les conmmandes ont été envoyées dans un ordre invalide.
    CR_SERVER_GONE_ERROR
    The MySQL server has gone away : le serveur MySQL s'est éteind.
    CR_OUT_OF_MEMORY
    Out of memory : plus de mémoire.
    CR_UNKNOWN_ERROR
    An unknown error occured : une erreur inconnue s'est produite.
Exemple L'exemple ci-dessous explique comment envoyer des données par partie dans une colonne de type TEXT :

#define INSERT_QUERY "INSERT INTO test_long_data(text_column) VALUES(?)"
  
MYSQL_BIND bind[1];
long       length;

smtt = 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;

  /* Liaison des buffers */
if (mysql_stmt_bind_param(stmt, bind))
{
  fprintf(stderr, "\n param bind failed");
  fprintf(stderr, "\n %s", mysql_stmt_error(stmt));
  exit(0);
}

   /* Envoi des données au serveur, par parties */
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);
}

   /* Envoi des données suivantes */
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);
}

   /* Exécution de la requête */
if (mysql_stmt_execute(stmt))
{
  fprintf(stderr, "\n mysql_stmt_execute failed");
  fprintf(stderr, "\n %s", mysql_stmt_error(stmt));
  exit(0);
}

<< mysql_stmt_send_long_data() >>
mysql_stmt_prepare() Descriptions des fonctions C pour les requêtes préparées mysql_stmt_affected_rows()