그누보드의 sql_query에 대해서 질문입니다.

그누보드의 sql_query에 대해서 질문입니다.

QA

그누보드의 sql_query에 대해서 질문입니다.

본문

그누보드5의 sql_query를 실행했는데요. 'SELECT * FROM g5_board WHERE bo_read_level = 1;'

를 실행했고 이것을, 

 

$query = sql_query($sql);
        
        while ($row = sql_fetch_array($query)) {
            $board[] = $row;
        }

 

이렇게 했습니다.

 

그리고 print_r($board)를 실행했더니 다음과 같이 나오는데요. 실제 테이블에는 그누보드의 게시판 한개만 들어있습니다. 

 

그런데 [0] -> Array ([bo_table] => test... 가 나오는 뒷부분은 게시판 정보인 것을 알겠는데 그 앞의 것들은 무엇일까요? 이것때문인지는 모르겠는데,

 

foreach ($board as $key => $val) :

$sql = " SELECT * FROM {$g5['write_prefix']}{$val['bo_table']} WHERE wr_id = wr_parent AND wr_is_comment = 0 ORDER BY wr_datetime DESC LIMIT 0, 1";

endforeach;

 

여기서 에러가 발생합니다. 정확히 이해한건 아닌데 $val 값이 없는데 사용했다. 이런 것으로 이해했네요.

 

PHP Fatal error:  Uncaught TypeError: Cannot access offset of type string on string

 

(맞으려나요? )

 

제가 예상했던 건 딱 테이블 정보만 배열에 들어가서 foreach를 돌때 test라는 테이블 명이 들어가야되는 것으로 예상하는데 이해가 될되서 배열의 앞부분 [0] 이전에 있는 것들의 정체를 모르겠습니다. 아시는 분 계시는지요?

 

Array ( [bo_table] => [bo_skin] => [bo_mobile_skin] => [bo_upload_count] => 0 [bo_use_dhtml_editor] => [bo_subject] => [bo_image_width] => 0 [0] => Array ( [bo_table] => test [gr_id] => ALL [bo_subject] => test [bo_mobile_subject] => [bo_device] => both [bo_admin] => [bo_list_level] => 1 [bo_read_level] => 1 [bo_write_level] => 1 [bo_reply_level] => 1 [bo_comment_level] => 1 [bo_upload_level] => 1 [bo_download_level] => 1 [bo_html_level] => 1 [bo_link_level] => 1 [bo_count_delete] => 1 [bo_count_modify] => 1 [bo_read_point] => 0 [bo_write_point] => 0 [bo_comment_point] => 0 [bo_download_point] => 0 [bo_use_category] => 0 [bo_category_list] => [bo_use_sideview] => 0 [bo_use_file_content] => 0 [bo_use_secret] => 0 [bo_use_dhtml_editor] => 0 [bo_select_editor] => [bo_use_rss_view] => 0 [bo_use_good] => 0 [bo_use_nogood] => 0 [bo_use_name] => 0 [bo_use_signature] => 0 [bo_use_ip_view] => 0 [bo_use_list_view] => 0 [bo_use_list_file] => 1 [bo_use_list_content] => 1 [bo_table_width] => 100 [bo_subject_len] => 60 [bo_mobile_subject_len] => 30 [bo_page_rows] => 15 [bo_mobile_page_rows] => 15 [bo_new] => 24 [bo_hot] => 100 [bo_image_width] => 600 [bo_skin] => basic_new [bo_mobile_skin] => basic [bo_include_head] => _head.php [bo_include_tail] => _tail.php [bo_content_head] => [bo_mobile_content_head] =>

 

이 질문에 댓글 쓰기 :

답변 3

배열이 잘못 되어 있는 것같습니다.

다음과 같은 방법으로 시도해 볼 수 있을 것 같습니다


foreach ($board as $key => $val) {
    $sql = "SELECT * FROM {$g5['write_prefix']}{$board[0]['bo_table']} WHERE wr_id = wr_parent AND wr_is_comment = 0 ORDER BY wr_datetime DESC LIMIT 0, 1";
    // 나머지 로직 수행
}

1.

$board는 그누보드에서 사용하는 변수입니다

다른 변수명으로 하세요

$board2 처럼

 

2.

Board배열을 초기화 설정없이 사용하니 그렇습니다

$board=array();를 while위쪽에 넣어보세요

 

 

 [0] 은 중첩된 배열구조로 보시면됩니다. 즉 게시판 정보와 관련된 키값 으로 사용한다는거겠죠;;

따라서 $board 배열이 제대로 설정되지 않았서 $val이 문자열로 설정되어 배열처럼 인덱싱할 수 없어서 발생한 오류라는거죠... 확인 또확인 하시기바랍니다.

느림의 미학으로 항상 응원합니다. 화이팅!~

답변을 작성하시기 전에 로그인 해주세요.
전체 6
QA 내용 검색

회원로그인

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