c언어 오류메시지 서버에서 클라이언트로 전송 질문입니다.[수정]
아래 코드처럼 작성했는데 데이터베이스에 없는 데이터를 입력해도
query_stat가 1로 변경되지가 않네요 1로 변경시키려면 어떻게 해야 하나요?
sprintf(str_sql,"select * from name_list where name like '%s%%' ", recvname);
printf("%s\n", str_sql);
query_stat = mysql_query(conn,str_sql);//
printf("%d",query_stat);//
result = mysql_store_result(conn);
memset(n, 0, sizeof(n));
j = 0;
if(query_stat == 0)//
{
while((row = mysql_fetch_row(result) )!=NULL)
{
strcpy(n[j].name, row[0]);
n[j].age = atoi(row[1]);
n[j].sex = atoi(row[2]);
j++;
}
} else if(query_stat !=0)//
{
strcpy(n[0].name,"errorrrrr");
}
if(send(clntSockfd, n, sizeof(n), 0) == -1)
{
perror("send failed");
exit(1);
}
https://dev.mysql.com/doc
https://dev.mysql.com/doc/refman/8.0/en/mysql-query.html
mysql_query의 반환값은 에러가 발생했을 때 nonzero로군요.
유효한 select 쿼리의 결과가 없는 건 에러가 아니죠. "찾고자 하는 데이터가 없다"라는 유효한 결과일 뿐.
어떻게든 query_stat을 nonzero로 만들고 싶으면 이렇게 하면 되겠지요:
query_stat = mysql_query(conn, "lorem ipsum");
추신. 알고 싶은 것이 query 결과가 있느냐 없느냐라면, 아래 api가 도움이 되겠네요:
https://dev.mysql.com/doc/refman/8.0/en/mysql-num-rows.html
댓글 달기