크롬80버전 결제 이슈, 영카트5 주요패치 확인!

그누보드 sql_fetch_all() 함수 추가 > 그누보드5 팁자료실

컨텐츠몰 10% 할인!
그누보드5
영카트5
매뉴얼
Q & A
제작의뢰
컨텐츠몰
부가서비스
소모임
커뮤니티

그누보드5 팁자료실

그누보드 sql_fetch_all() 함수 추가 정보

그누보드 sql_fetch_all() 함수 추가

본문

그누보드5(5.3, 5.4, 4 동일) 에 sql관련 함수들이 있는데,

쿼리 전체 결과를 리턴하는 함수가 없습니다. (pdo 에서 fetchAll() 함수 같은)

 

테이블 row단위로 반복요청을 보내는 방식을 쓰는데, 코드간에 결합도가 높아져서 추가 기능을 넣게 되면,

코드가 많이 지저분해집니다.(이런 코드는 유지보수에서 안 좋습니다.)

 

물론 각각의 기능에서 fetch loop를 통해서 전체rows를 가져온다음  다시 반복문을 사용해도 되나

이러면 각 페이지마다 중복 코드가 발생하게 되죠. 

lib/common.lib.php에서 이 기능을 제공하면 깔끔해집니다.

 

5.4 버전 기준으로 만든 코드입니다. 5.3도 별로 차이 없을것 같네요.

 

// 쿼리를 실행한 후 결과값에서 모든행을 얻는다.
function sql_fetch_all($sql, $error=G5_DISPLAY_SQL_ERROR, $link=null)
{
    global $g5;
    if(!$link)
        $link = $g5['connect_db'];
    $rows = array();
    $result = sql_query($sql, $error, $link);
    while(($row =  sql_fetch_array($result)) != null) {
    if(function_exists('mysqli_fetch_assoc') && G5_MYSQLI_USE)
            $row = @mysqli_fetch_assoc($result);
        else
            $row = @mysql_fetch_assoc($result);
        
        $rows[] = $row;
    }
    return $rows    ;
}

 

 

사용법은

sql_fetch($sql); 함수와 동일합니다.

 

$list = sql_fetch_all($sql);

 

foreach($list as $row) {

    //row 별로 작업..

}

 

그누보드5.4 공식 기능으로 추가해달라고 요청해두었습니다.

https://github.com/gnuboard/gnuboard5/pull/47/commits/b3d0edb1734e8b926a897d70569063e6e67902cc

그전까진 일단 common.lib.php에 추가해서 사용하세요.

 

이렇게 전체 데이타를 쿼리하는 함수가 있으면, 좀더 깔끔하고 심플한 코드를 추가할수 있게 됩니다.

 

 

 

 

 

추천4

댓글 전체

전체 1,631 |RSS
그누보드5 팁자료실 내용 검색

회원로그인

진행중 포인트경매

  1. 참여17 회 시작20.03.25 10:40 종료20.04.01 10:40

(주)에스아이알소프트 (06253) 서울특별시 강남구 도곡로1길 14, 6층 624호 (역삼동, 삼일프라자) 대표메일:admin@sir.kr
사업자등록번호:217-81-36347 대표:홍석명 통신판매업신고번호:2014-서울강남-02098호 개인정보보호책임자:이총

© SIRSOFT