이렇게 변형하면 왜 안되는 것이죠??? > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

이렇게 변형하면 왜 안되는 것이죠??? 정보

이렇게 변형하면 왜 안되는 것이죠???

본문

수정전 원본
 
    $sql = " select * from $g4[board_new_table] where bo_table like '{$nc[cb_disc]}%' and wr_id = wr_parent order by bn_id desc limit 0, $rows ";
    $result = sql_query($sql);
 
    for ($i=0; $row = sql_fetch_array($result); $i++) {
        $sql = " select * from $g4[board_table] where bo_table = '$row[bo_table]' ";
        $board = sql_fetch($sql);
        $tmp_write_table = $g4[write_prefix] . $row[bo_table]; // 게시판 테이블 전체이름
        $sql = " select * from $tmp_write_table where wr_id = '$row[wr_id]' ";
        $row2 = sql_fetch($sql);
        $list[$i] = get_list($row2, $board, $latest_skin_path, $subject_len);
    }
 
희망하는 수정버젼
 
    $sql = " select * from $g4[board_new_table] where bo_table like '{$nc[cb_disc]}%' and wr_id = wr_parent order by bn_id desc limit 0, $rows ";
    $result = sql_query($sql);
 
    for ($i=0; $i < $rows; $i++) {
        $row = sql_fetch_array($result)
        $sql = " select * from $g4[board_table] where bo_table = '$row[bo_table]' ";
        $board = sql_fetch($sql);
        $tmp_write_table = $g4[write_prefix] . $row[bo_table]; // 게시판 테이블 전체이름
        $sql = " select * from $tmp_write_table where wr_id = '$row[wr_id]' ";
        $row2 = sql_fetch($sql);
        $list[$i] = get_list($row2, $board, $latest_skin_path, $subject_len);
    }
 
논리적으로는 for loop는 그냥 돌구... 정해진대로 $result에서 한줄씩 가져오면 되는건데...
왜 안되는 것이죠? 이렇게 해 놓으니까 db에서 값을 가져오지 못하네요. ㅠ..ㅠ

댓글 전체

혹시 에러나지 않는지요?

전체적인 소스를 보지 못해서 정확한지 모르겠지만 올리신 소스를 기준으로 보면 아래부분에 ;가 빠진듯 합니다.

$row = sql_fetch_array($result)을  ==> $row = sql_fetch_array($result); 이렇게.. 맞으면 좋겠네요.
아~ 이것은 제가 질문용으로 옮기면서 ; 을 빼먹었구요... 실제는 ; 가 있는게 맞아요. ㅠ..ㅠ
db 부분만 들어가면 실행이 이상해 지는 이유가 뭔지... 이긍~ ㅠ..ㅠ
$rows는 함수에서 받은 것으로 줄수 입니다. 정수형이구요. 그래서오류는 없던데요? ㅠ..ㅠ

db 관련된 부분이 실행되지 않으면 프로그램의 $i는 정상인데,
db 관련된 부분만 실행되면 이상해져요. $row에 값을 못 가져오는거에요. fetch를 못하는거죠. ㅠ..ㅠ

        $row = sql_fetch_array($result)
        $sql = " select * from $g4[board_table] where bo_table = '$row[bo_table]' ";
        $board = sql_fetch($sql);
        $tmp_write_table = $g4[write_prefix] . $row[bo_table]; // 게시판 테이블 전체이름
        $sql = " select * from $tmp_write_table where wr_id = '$row[wr_id]' ";
        $row2 = sql_fetch($sql);
        $list[$i] = get_list($row2, $board, $latest_skin_path, $subject_len);
아래와 같이 써 보세요..

$sql = " select * from $g4[board_new_table] where bo_table like '{$nc[cb_disc]}%' and wr_id = wr_parent order by bn_id desc limit 0, $rows ";
    $result = sql_query($sql);

    $i = 0;
 
    while($row = sql_fetch_array($result))
    {
      if($i >= $rows)
      {
      break;
      }   
   
      $sql1 = " select * from $g4[board_table] where bo_table = '$row[bo_table]' ";
      $board = sql_fetch($sql1);
     
      $tmp_write_table = $g4[write_prefix] . $row[bo_table]; // 게시판 테이블 전체이름
      $sql = " select * from $tmp_write_table where wr_id = '$row[wr_id]' ";
   
      $row2 = sql_fetch($sql);       
   
      $list[$i] = get_list($row2, $board, $latest_skin_path, $subject_len);
   
      $i++;
    }

혹 위의 방법으로 안된다면 $nc[cb_disc] 정의 부분을 살펴 보시기 바랍니다.
클럽을 사용하지 않기에 별도의 lib 화일을 만들어 like에 의한 최신글 추출을 한결과 잘 동작합니다.....^^
개별 sql을 출력해서 phpMyAdmin에서 실행을 해보니까 잘 되더라구요.
아~ 진정 break 하는 방법밖에 없나요 ㅠ..ㅠ
해도 해도 안되면 while loop로 하려고 했는데 이렇게 하니까 잘 되네요.
그런데 제가 궁금한거는 왜 for loop에서는 안돼냐는거죠 ㅠ..ㅠ 왜??? 왜????
break가 싫으시면(?) 이렇게 해 보세요...

$sql = " select * from $g4[board_new_table] where bo_table like '{$nc[cb_disc]}%' and wr_id = wr_parent order by bn_id desc limit 0, $rows ";
    $result = sql_query($sql);

 
    for ($i=0; $i < $rows; $i++) {
     
      $row = sql_fetch_array($result);
   
      $sql1 = " select * from $g4[board_table] where bo_table = '$row[bo_table]' ";
      $board = sql_fetch($sql1);
     
      $tmp_write_table = $g4[write_prefix] . $row[bo_table]; // 게시판 테이블 전체이름
      $sql = " select * from $tmp_write_table where wr_id = '$row[wr_id]' ";
   
      $row2[$i] = sql_fetch($sql);       
   
      $list[$i] = get_list($row2[$i], $board, $latest_skin_path, $subject_len);
 
    }
감사합니다.
저도 그래야 한다고 믿었고 for loop도 sql 관련 사항이 실행되지 않으면 잘 돌아가요.
fortran 프로그래머들은 중간과정을 다 echo 시켜버리죠. ㅋㅋ
그런데 이경우에만 for loop안에서 가장 첫줄의 sql_fetch_array가 안되는거에요. 아~ ... 아~...
전체 66,554 |RSS
그누4 질문답변 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT