mysql_stmt_bind_param error

"Arias Gonzalez, Javier" <[email protected]>
Newsgroups gmane.comp.db.mysql.windows
Message-ID <A73E3719C2CC924D83B941E8EB96B0EA04D8E3CE@esmad-exch1.eu.uis.unisys.com>
I tried to execute the example code (see below) from the function
mysql_stmt_execute I found in mysql 4.1 documentation
(http://dev.mysql.com/doc/refman/4.1/en/mysql-stmt-execute.html). This
source code runs perfect under linux red hat with version 4.1.7 but it
prints out an error if I try to run it under windows XP SP2.

 

This is the output of this code

 

prepare, INSERT successful

 total parameters in INSERT: 3

 mysql_stmt_bind_param() failed

 Using unsupported buffer type: 838860800  (parameter: 2)

 

It seems that the function mysql_stmt_bind_param  is not working under
this environment. 

 

I tried installing version 4.1.20 and linking my program with the new
library but the result is the same.

 

Is that a bug of windows version? Can anyone help?

 

Thanks in advanced

Javier Arias

 

/***********************************************************************
************************************************************************
******/

 

#define STRING_SIZE 50

 

#define DROP_SAMPLE_TABLE "DROP TABLE IF EXISTS test_table"

#define CREATE_SAMPLE_TABLE "CREATE TABLE test_table(col1 INT,\

                                                 col2 VARCHAR(40),\

                                                 col3 SMALLINT,\

                                                 col4 TIMESTAMP)"

#define INSERT_SAMPLE "INSERT INTO test_table(col1,col2,col3)
VALUES(?,?,?)"

 

MYSQL_STMT    *stmt;

MYSQL_BIND    bind[3];

my_ulonglong  affected_rows;

int           param_count;

short         small_data;

int           int_data;

char          str_data[STRING_SIZE];

unsigned long str_length;

my_bool       is_null;

 

if (mysql_query(mysql, DROP_SAMPLE_TABLE))

{

  fprintf(stderr, " DROP TABLE failed\n");

  fprintf(stderr, " %s\n", mysql_error(mysql));

  exit(0);

}

 

if (mysql_query(mysql, CREATE_SAMPLE_TABLE))

{

  fprintf(stderr, " CREATE TABLE failed\n");

  fprintf(stderr, " %s\n", mysql_error(mysql));

  exit(0);

}

 

/* Prepare an INSERT query with 3 parameters */

/* (the TIMESTAMP column is not named; the server */

/*  sets it to the current date and time) */

stmt = mysql_stmt_init(mysql);

if (!stmt)

{

  fprintf(stderr, " mysql_stmt_init(), out of memory\n");

  exit(0);

}

if (mysql_stmt_prepare(stmt, INSERT_SAMPLE, strlen(INSERT_SAMPLE)))

{

  fprintf(stderr, " mysql_stmt_prepare(), INSERT failed\n");

  fprintf(stderr, " %s\n", mysql_stmt_error(stmt));

  exit(0);

}

fprintf(stdout, " prepare, INSERT successful\n");

 

/* Get the parameter count from the statement */

param_count= mysql_stmt_param_count(stmt);

fprintf(stdout, " total parameters in INSERT: %d\n", param_count);

 

if (param_count != 3) /* validate parameter count */

{

  fprintf(stderr, " invalid parameter count returned by MySQL\n");

  exit(0);

}

 

/* Bind the data for all 3 parameters */

 

memset(bind, 0, sizeof(bind));

 

/* INTEGER PARAM */

/* This is a number type, so there is no need to specify buffer_length
*/

bind[0].buffer_type= MYSQL_TYPE_LONG;

bind[0].buffer= (char *)&int_data;

bind[0].is_null= 0;

bind[0].length= 0;

 

/* STRING PARAM */

bind[1].buffer_type= MYSQL_TYPE_STRING;

bind[1].buffer= (char *)str_data;

bind[1].buffer_length= STRING_SIZE;

bind[1].is_null= 0;

bind[1].length= &str_length;

 

/* SMALLINT PARAM */

bind[2].buffer_type= MYSQL_TYPE_SHORT;

bind[2].buffer= (char *)&small_data;

bind[2].is_null= &is_null;

bind[2].length= 0;

 

/* Bind the buffers */

if (mysql_stmt_bind_param(stmt, bind))

{

/*********************************************************************TH
E ERROR IS HERE************************************/

  fprintf(stderr, " mysql_stmt_bind_param() failed\n");

  fprintf(stderr, " %s\n", mysql_stmt_error(stmt));

  exit(0);

}
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.