PDA

Visualizza la versione completa : [C] Problema connessione col DB


schumy2000
19-03-2008, 10:57
Ho un problema con l'update di MYSQL su linguaggio C. Inizialmente scarico tutte le informazioni che mi interessano e il mio programma si mette a lavorare tranquillamente alla fine pero nell'ultimo pezzo di codice dove dopo aver fatto tutte le operazioni devo andare a salavare nel DB mi dice sempre error: 1064
Vi posto il codice così potete meglio rendervi conto:

int query_execute(char *db, char *query, MYSQL *sql){
int cont_occorrenze=0;
MYSQL_RES *res;
MYSQL_ROW row;
MYSQL_FIELD *f;
unsigned int n=0, hj=0;
char *other_query="update movimenti set ip_2='%s' where id_movimento=%d " ;
char query_update[LEN_MAX_QUERY];
memset(query_update, 0x00, LEN_MAX_QUERY);
char *new_ip_2=NULL;
new_ip_2=calloc(LEN_MAX_IP, 1);

//in un altra funzione(precedente a questa) faccio partire la mysql_init e la mysql_real_connect

if (mysql_select_db(sql, db) != 0) //si connette al db
{
printf("\nConnect db error\n");
return EXIT_FAILURE;
}

if (mysql_real_query(sql, query, strlen(query) + 0x1) != 0)
//fa la query "select id_movimenti, ip from Movimenti" e la esegue correttamente
{
printf("Query db error\n");
return EXIT_FAILURE;
}


res = mysql_store_result(sql);

n = mysql_num_fields(res);
f = mysql_fetch_fields(res);

while ((row=mysql_fetch_row(res))) {

new_ip_2=ipWithoutDot(row[1]);

cont_occorrenze = snprintf(query_update, LEN_MAX_QUERY, other_query, new_ip_2, atoi(row[0]));
printf("%s",query_update);
//le stampa correttamente a patto che nn ci sia la funzione successiva ke da un EXIT_FAILURE;


//da Errore 1064 tramite la "hj=mysql_errno(sql)"
//se nn ce questa istruzione tutto il programma funziona correttamente
if (mysql_real_query(sql, query_update, (strlen(query_update))+1 != 0)) {
hj=mysql_errno(sql);
printf("\nQuery db error2: %d\n",hj);
return EXIT_FAILURE;
}
}
}
Ho visto error 1064 ma nn credo sia qlcs che riguarda il codice da me fatto finora....

Vi prego datemi un aiuto ci sto impazzendo 2 giorni a fare prove per far funzionare questo cavolo di istruzione...

oregon
19-03-2008, 11:54
Cominciamo dall'errore 1064 ... mi sembra che sia una segnalazione di "errore di sintassi della query" ... hai controllato cosa passi esattamente nella query? (ci sono tutti gli spazi necessari, ad esempio)?

schumy2000
19-03-2008, 13:02
Ciao Oregon,
mi facevo stampare la query per essere più sicuro e me le stampava a video correttamente.
Poi ho fatto una cosa assurda ovvero ho copiato ed incollato la mysql_real_query di sopra nella parte "incriminata", ho cambiato qlc nome di variabile e adesso fatto sta che funziona :fighet:
So che può essere da pazzi ma è così. :oVVoVe:

Ti ringrazio dell'interessamento Oregon

Ciao :ciauz:

Loading