lorien3
05-01-2012, 11:26
salve a tutti,
vorrei riuscire a capire come poter utilizzare i prepared statement... ho letto la documentazione (http://dev.mysql.com/doc/refman/5.6/en/mysql-stmt-execute.html) ma sinceramente anche seguendo il loro codice ci ho capito ben poco... cmq vi metto un codice di esempio per riuscire a capire dove sbaglio
//mi connetto al database
conn = mysql_init(NULL);
//preparo la query
sprintf(myquery,"SELECT password FROM accesso WHERE id_doc=?");
//inizializzo lo statement
stmt = mysql_stmt_init(conn);
mysql_stmt_prepare(stmt, myquery, strlen(myquery))
//conto i parametri, in questo caso 1 solo, passaggio fatto solo per la verifica
param_count= mysql_stmt_param_count(stmt);
//preparo l'unico parametro che è una stringa
memset(bind, 0, sizeof(bind));
bind[0].buffer_type= MYSQL_TYPE_STRING;
bind[0].buffer= (char *)str_data;
bind[0].buffer_length= 10;
bind[0].is_null= 0;
bind[0].length= &str_length;
mysql_stmt_bind_param(stmt, bind)
//setto il parametro (anche se questo passaggio a senso dovrebbe essere fatto prima, ma così dice la documentazione)
strncpy(str_data, "123", 10); /* string */
str_length= strlen(str_data);
//eseguo la query
mysql_stmt_execute(stmt)
//prendo i risultati
res = mysql_use_result(conn);
//li stampo
printf("MySQL Tables in mysql database:\n");
while ((row = mysql_fetch_row(res)) != NULL)
printf("%s \n", row[1]);
/* close connection */
mysql_free_result(res);
mysql_close(conn);
il grosso problema è che quando vado a stampare mi da segmentation fault proprio perchè non ci sono risultati... :(
se riuscite a darmi una mano ve ne sarei molto molto grato!!!
vorrei riuscire a capire come poter utilizzare i prepared statement... ho letto la documentazione (http://dev.mysql.com/doc/refman/5.6/en/mysql-stmt-execute.html) ma sinceramente anche seguendo il loro codice ci ho capito ben poco... cmq vi metto un codice di esempio per riuscire a capire dove sbaglio
//mi connetto al database
conn = mysql_init(NULL);
//preparo la query
sprintf(myquery,"SELECT password FROM accesso WHERE id_doc=?");
//inizializzo lo statement
stmt = mysql_stmt_init(conn);
mysql_stmt_prepare(stmt, myquery, strlen(myquery))
//conto i parametri, in questo caso 1 solo, passaggio fatto solo per la verifica
param_count= mysql_stmt_param_count(stmt);
//preparo l'unico parametro che è una stringa
memset(bind, 0, sizeof(bind));
bind[0].buffer_type= MYSQL_TYPE_STRING;
bind[0].buffer= (char *)str_data;
bind[0].buffer_length= 10;
bind[0].is_null= 0;
bind[0].length= &str_length;
mysql_stmt_bind_param(stmt, bind)
//setto il parametro (anche se questo passaggio a senso dovrebbe essere fatto prima, ma così dice la documentazione)
strncpy(str_data, "123", 10); /* string */
str_length= strlen(str_data);
//eseguo la query
mysql_stmt_execute(stmt)
//prendo i risultati
res = mysql_use_result(conn);
//li stampo
printf("MySQL Tables in mysql database:\n");
while ((row = mysql_fetch_row(res)) != NULL)
printf("%s \n", row[1]);
/* close connection */
mysql_free_result(res);
mysql_close(conn);
il grosso problema è che quando vado a stampare mi da segmentation fault proprio perchè non ci sono risultati... :(
se riuscite a darmi una mano ve ne sarei molto molto grato!!!