sql 반복문 안됩니다
본문
반복문을 하나만 실행 하면 되는데요 2개를 다실행하면 안됩니다.. 왜그런지??
아시면 답변좀 부탁 드립니다.
하나씩 각 각 실행 하면 됩니다
while($rss=sql_fetch_array($result)) {
$arr[]= $rss['wr_id'];
}
$hap18 = implode(',',$arr) ;
$response->hap18 = $hap18;
while($rs=sql_fetch_array($result)) {
// 열람가능 여부
if(check_id($rs) == false) {
$reper = "열람불가";
$cls = "txt_gray";
} else {
$reper = "열람가능";
$cls = "txt_blue";
}
///$sss = check_id($rs);
//print_r2($sss);
$comment_cnt = ($rs['wr_comment']>0)? " (<span style='color:red;'>".$rs['wr_comment']."</span>)":"";
$response->rows[$i]['num'] = $num;
$response->rows[$i]['wr_id'] = $rs['wr_id'];
$response->rows[$i]['ca_name'] = $rs['ca_name'];
$response->rows[$i]['wr_subject'] = $rs['wr_subject'].$rs['wr_18'];
$response->rows[$i]['wr_name'] = mb_name($rs['mb_id']);
$response->rows[$i]['wr_datetime'] = $rs['wr_datetime'];
$response->rows[$i]['wr_3'] = approval($rs['wr_2'], $rs['wr_3']);
$response->rows[$i]['wr_5'] = approval($rs['wr_4'], $rs['wr_5']);
$response->rows[$i]['wr_7'] = approval($rs['wr_6'], $rs['wr_7']);
$response->rows[$i]['wr_9'] = approval($rs['wr_8'], $rs['wr_9']);
$response->rows[$i]['wr_10'] = $rs['wr_10'];
$response->rows[$i]['view'] = "<span class='{$cls}'>{$reper}</span>";
$response->rows[$i]['edit'] = ($member['mb_id']==$rs['mb_id']) ? "true" : "false";
$response->rows[$i]['href'] = get_pretty_url($bo_table, $rs['wr_id'], $qstr);
$num--;
$i++;
}
echo json_encode($response);
답변 3
$result 의 값이 증가되어서 그렇습니다.
database의 table 의 값에는 행번호의 순서가 있습니다.
행번호(숨어있음) id name value
0 aa 홍길동 의적
1 bb 이순신 장군
2 cc 강감찬 장군
...
이런값이 있다고 가정하면
while ($rss=sql_fetch_array($result)) {
}
로 반복될때
sql_fetch_array($result)에는 묵시적으로 $result의 행번호는 순차적으로 증가합니다.
즉, $result는 행번호를 가르키는 포인터정보가 들어가 있는것이라고 보면됩니다.
반복이 끝났을때 $result는 맨 마지막 Row정보가 들어가 있게되기때문에
$result의 값을 처음으로 돌려놔야 합니다.
혹은 새로운 값으로 재할당해야 다시금 반복이 가능합니다.
두번째 while문 위에 추가
sql_data_seek($result, 0);
반복문을 하나만 실행 하면 되는데요 2개를 다실행하면 안됩니다
==
안 된다라고 하신 상황이 어떤 건가요?