2026, 새로운 도약을 시작합니다.

그누보드 sql_fetch_all() 함수 추가

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

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

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

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

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

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

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

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

[code]

// 쿼리를 실행한 후 결과값에서 모든행을 얻는다.
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    ;
}

[/code]

사용법은

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에 추가해서 사용하세요.

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

|

댓글 5개

좋은 정보 감사합니다.
유용한 정보 감사합니다.
유용한정보 감사합니다.
mysqli_fetch_all 를 사용하면 됩니다 php 5.3 이상

그리고 위에 코드는 아래 4개 라인을 빼야 정상동작 합니다

if(function_exists('mysqli_fetch_assoc') && G5_MYSQLI_USE)
$row = @mysqli_fetch_assoc($result);
else
$row = @mysql_fetch_assoc($result);

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

그누보드5 팁자료실

번호 제목 글쓴이 날짜 조회
공지 3년 전 조회 4,598
2741 3일 전 조회 111
2740 4일 전 조회 103
2739 1주 전 조회 209
2738 1주 전 조회 217
2737 1주 전 조회 181
2736 1주 전 조회 280
2735 3주 전 조회 281
2734 3주 전 조회 263
2733 1개월 전 조회 265
2732 1개월 전 조회 301
2731 1개월 전 조회 267
2730 1개월 전 조회 226
2729 1개월 전 조회 356
2728 1개월 전 조회 245
2727 1개월 전 조회 422
2726 1개월 전 조회 256
2725 1개월 전 조회 330
2724 1개월 전 조회 358
2723 1개월 전 조회 267
2722 1개월 전 조회 300
2721 1개월 전 조회 211
2720 2개월 전 조회 304
2719 2개월 전 조회 307
2718 2개월 전 조회 202
2717 2개월 전 조회 336
2716 2개월 전 조회 202
2715 2개월 전 조회 311
2714 2개월 전 조회 273
2713 2개월 전 조회 376
2712 2개월 전 조회 289
🐛 버그신고