c와 mysql을 연동을 하였는데 insert하는 것과 select를 이용해 테이블 전체를 불러오는 것까지는 가능하게 되었습니다.
그런데 이제 로그인폼을 위해 mysql의 데이터와 c에서 입력한 아이디, 패스워드를 비교하여 로그인 성공 또는 실패를 나타내게 하는 방법을 잘 모르겠습니다.
c에서 mysql의 일부 컬럼만을 불러와 c에서 입력한 것과 비교하는 방법이 뭐가있을까요
=========================================================================================================
// 로그인 form
char id[20], pwd[20];
int state = 0;
char query[255]; // 쿼리에 메모리 할당
mysql_init(&mysql);
connection = mysql_real_connect(&mysql, DB_HOST, DB_USER, DB_PASS, DB_NAME, 3306, (char *)NULL, 0); // db 연결
state = mysql_query(connection, "select * from member"); // db 테이블 불러오기
res = mysql_store_result(connection);
printf("\t\t< 로그인 >\n\n");
// printf("%20s %10s", "아이디", "패스워드");
while ((row = mysql_fetch_row(res)) != NULL) {
//printf("%20s %10s\n", row[1], row[2]);
}
mysql_free_result(res);
printf("아이디 : ");
scanf("%s", id);
// fgets(id, 20, stdin); // 문자열을 받음
// CHOP(id);
sprintf(query, "select * from member where id = '%s'", id);
mysql_query(conn, query);
if (id == row[1]) { // 아이디가 일치하면 비밀번호 입력으로 넘어감
printf("패스워드 : ");
fgets(pwd, 10, stdin);
// CHOP(pwd);
sprintf(query, "select * from member where pwd = %s", pwd);
if (pwd == row[2]) { // 비밀번호가 일치하면 로그인 성공
printf("로그인 성공\n");
}
else { // 아이디는 일치. 비번은 불일치하면 패스워드를 잘못입력하셨습니다.
printf("패스워드를 잘못 입력하셨습니다.\n");
}
}
else { // 아이디가 불일치하면 아이디가 일치하지 않았습니다로 넘어감
printf("아이디가 일치하지 않습니다.\n");
}
state = mysql_query(connection, query);
printf("state : %d\n", state);
if (state != 0) {
fprintf(stderr, "Mysql query error : %s", mysql_error(&conn));
return 1;
}
mysql_close(connection);
|