1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
| int testFTwithUsername (numFT, user)
int numFT;
t_buffer *user;
{
MYSQL *mysql,*sock;
MYSQL_RES *res;/* Structure représentant le résultat d'une requête */
MYSQL_ROW row;/* Structure représentant les types d'une ligne de données. Lignes obtenues en appelant mysql_fetch_row() */
char *query, *pos, *str;
int j,i,nblignes;
int result_req_cmp[100];
/* Utilisateur ? */
if (!user->buf || !user->lg )
{
char *tmp;
tmp = "E fwcvs: no user\n";
envoiebuf(CLNTOUTPUT,tmp,strlen(tmp));
return 0;
}
/* Test de connexion SQL*/
if(mysql = mysql_init(NULL))
{
if (!(sock = mysql_real_connect(mysql,"localhost","smo","smo","bugSMO",0,NULL,0)))
{
char *tmp;
TRACE1("testFTwithUsername: Couldn't connect to mysql (%s)\n",mysql_error(mysql));
tmp = "E fwcvs: Couldn't connect to the database.\n";
envoiebuf(CLNTOUTPUT,tmp,strlen(tmp));
return 0;
}
/* On lance la requête... */
query = malloc(256+user->lg);
sprintf(query,"SELECT bug_id FROM bugs b, users u WHERE b.affecte_a = u.user_id AND b.status = 2 AND u.login = '%s';", numFT);
/* mysql_query() Exécute une requête SQL spécifiée en tant que chaîne terminée par un caractère nul.*/
if (mysql_query(sock,query))
{
char *tmp;
TRACE2("TestFTwithUsername : Couldn't select to mysql (%s)\n %s\n",mysql_error(mysql),query);
tmp = "E fwcvs: Couldn't find FT in the database.\n";
envoiebuf(CLNTOUTPUT,tmp,strlen(tmp));
free(query);
mysql_close(mysql);
return 0;
}
else
{
result_req_cmp = mysql_store_result(sock);
nblignes = mysql_num_rows(res);
for (i=0; i<nblignes; i++)
{
TRACE1("RES : %d", result_req_cmp[i]);
// Sinon si la requête a été executée il faut la vérifier
} free(query);
/* mysql_store_result() est appelée pour chaque requête qui récupère des données avec succès, retourne un pointeur nul*/
/* si pas de résultat. mysql_num_rows() Retourne le nombre de lignes présentes dans le résultat */
res=mysql_store_result(sock);
if (!res || !(j=mysql_num_rows(res)) )
{
/* Le FT n'est pas bon */
return 0;
}
/*Libère la mémoire allouée à un résultat avec mysql_store_result() */
mysql_free_result(res);
mysql_close(mysql);
return(1);
}
return(0);
} |
Partager