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 <mysql.h> /* Headers for MySQL usage */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// #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() */
--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]