MESSAGE
DATE | 2004-09-06 |
FROM | Ruben Safir Secretary NYLXS
|
SUBJECT | Subject: [hangout] Segfault in mysql_real_escape_string
|
Hello
I'm getting a segmentation fault in the mysql function mysql_real_escape_string and I don't have a clue why. What am I missing?
#include /* Headers for MySQL usage */ #include #include #include
// #define INSERT_STATEMENT "INSERT INTO patient (idno,first,last,medrec) VALUES(NULL,?,?,?)"
static MYSQL clinical_db; /* static MYSQL_STMT *stmt; */ /* static MYSQL_BIND cols[3]; */ static my_ulonglong affected_rows; /*static int param_count; */ static unsigned long str_length; char str_data[1024]; /* static my_bool is_null; */
int main(int argc, char **argv){ int insert_id; char *encdata, *query, *end, *value; int datasize; int param_count; MYSQL_RES *res; /* To be used to fetch information into */ MYSQL_ROW row;
mysql_init(&clinical_db); if(mysql_real_connect(&clinical_db, "localhost", "pharmacy", "show22case", "clinical", 0, NULL, 0)){ fprintf(stderr, "No Connection: %s\n", mysql_error(&clinical_db)); exit(0); } printf ("Hey this worked\n"); /* Prepared statements not supported in this version of MYSQL */ /* stmt = mysql_stmt_init(clinical_db); */ // if(!stmt){ // fprintf(stderr, "mysql_stmt_init(), out of memory\n"); // exit(0); // } // if(mysql_stmt_prepare(stmt, INSERT_STATEMENT, strlen(INSERT_STATEMENT))){ // fprintf(stderr, "mysql_stmt_prepare(), INSERT failed\n"); // fprintf(stderr, "%s\n", mysql_stmt_error(stmt)); // }
/* Get parameter count and hope it is right */ //param_count = mysql_stmt_param_count(stmt); //fprintf(stdout, "total params are %d\n", param_count);
/* Let's try to add something to the database */
query = malloc(2048); value = malloc(2048); encdata = malloc(2048); strcpy(query,"INSERT INTO patient VALUES (NULL,"); str_length = strlen(query); end = query + str_length + 1; printf("\nFirst Name ==>"); fgets( value, 26, stdin); mysql_real_escape_string(&clinical_db,encdata,value,strlen(value)); <<======= Segmenetation Fault /*end += mysql_real_escape_string(&clinical_db,end,value,strlen(value));*/ *end++ = ','; printf("\nLast Name ==>"); fgets( value, 26, stdin); end += mysql_real_escape_string(&clinical_db, end,value,strlen(value) - 1); *end++ = ','; printf("\nMedical Record Number==>"); fgets(value,12,stdin); end += mysql_real_escape_string(&clinical_db, end,value,strlen(value) - 1); end++; strcpy(end,")");
printf("\nResulting Query %s", query);
return 0; } /* End of main() */
____________________________ NYLXS: New Yorker Free Software Users Scene Fair Use - because it's either fair use or useless.... NYLXS is a trademark of NYLXS, Inc
|
|