대충 아래와 같이 하였을 때
mysql_store_result(&mysql)
mysql_data_seek(res,0);
을 사용하니 처음(0)의 pointer 로 이동하여 data를
잘 쁘려주더군요.. 아마 다른 곳의 소스를 다시 확인하시고
밑의 예제를 활용 하세요.
=================================================================
int main()
{
uint i = 0;
if (!(mysql_connect(&mysql,"","","")))
exiterr(1);
if (mysql_select_db(&mysql,"carinform"))
exiterr(2);
if (mysql_query(&mysql,"select .........."))
exiterr(3);
if (!(res = mysql_store_result(&mysql)))
exiterr(4);
while((row = mysql_fetch_row(res))) {
// for (i=0 ; i < mysql_num_fields(res); i++)
printf("%s %s
",row[0],row[1]);
}
mysql_data_seek(res,0);
while((row = mysql_fetch_row(res))) {
// for (i=0 ; i < mysql_num_fields(res); i++)
printf("%s %s
",row[0],row[1]);
}
if (!mysql_eof(res))
exiterr(5);
mysql_free_result(res);
mysql_close(&mysql);
}
======================================================================
::jongj 님께서 쓰시길::
> 안냐세여.
> c api에서 쿼리를 mysql_init(),,,,real_connect,,,,,,,query,,,,,,real_query,,,
> ,,res=mysql_store_result()....mysql_fetch_row(res)해서
> 결과를 row[0],row[1]......이렇게 해서 결과를 이용하고 다시
> 같은 결과를 얻기 위해
> mysql_real_query(위와 같은 쿼리문).......res=mysql_store_reslut().....row=mysql_fetch_row(res)
> 로 하면 결과가 나오지 않습니다.
> 똑같은 결과를 얻기 전에 mysql_free_result()해도 결과는 나오지 않습니다.
> 알려주세요..꼭...
>
> 참고로 왜 똑같은 결과를 두번 얻을라고 하냐면
> 먼저 결과의 크기를 안 다음에
> 그 크기에 맞게 결과를 저장해야 하거든요...
> ex)for(i=0;row=fetch_row...;i++){
> 여기서 결과의 크기를 모두 계산하고
> }
> for(i=0;row=fetch_row;i++){
> 여기서 결과를 저장합니다(다른 변수에)
> }
> --------------------------------------------------------------
> 위의 글을 쓰고 공부를 해보니까
> mysql_data_seek()라는 함수가 있더군요.
> 그래서 mysql_store_result()하고
> 그 다음에 mysql_data_seek(res,0);
> 하니까 Segmentation fault가 나더라구요..
> 왜 그럽니까? 알려주세요.
|