sql 문장 문의드립니다
본문
추천 누른 게시물을 불러오는 쿼리 문장인데요
$query = sql_query("SELECT * FROM g5_board_good WHERE mb_id = '".$member['mb_id']."' AND bg_flag = 'good' ORDER BY bg_id LIMIT 5");
이것을 전체가 아닌 그룹에서만 하는거라서
$sql="SELECT b.*
FROM g5_board as a , g5_board_good as b
WHERE a.gr_id='1'
AND a.bo_table=b.bo_table
AND b.mb_id = '".$member['mb_id']."'
AND b.bg_flag = 'good'
ORDER BY b.bg_id LIMIT 5";
$query = sql_query($sql);
이렇게 변경이 되었습니다
문제는 게시판 형태로 만들어야되잖아요?^^
저는 scrap.php 파일처럼 똑같이 팝업형태로 불러오고자 해서
비슷하게 넣어봤는데
안불러와서요
혹시 sql 문장에 오류가 있는 부분이 있으면 알려주시면 감사하겠습니다
게시물 제목만 불러오는걸로 했고요 상하단 루트는 구지 안적었습니다
$sql="SELECT b.*
FROM g5_board as a , g5_board_good as b
WHERE a.gr_id='gr_1'
AND a.bo_table=b.bo_table
AND b.mb_id = '".$member['mb_id']."'
AND b.bg_flag = 'good'
ORDER BY b.bg_id LIMIT 100";
$sql_order = " order by ms_id desc ";
$sql = " select count(*) as cnt $sql_common ";
$row = sql_fetch($sql);
$total_count = $row['cnt'];
$rows = $config['cf_page_rows'];
$total_page = ceil($total_count / $rows); // 전체 페이지 계산
if ($page < 1) $page = 1; // 페이지가 없으면 첫 페이지 (1 페이지)
$from_record = ($page - 1) * $rows; // 시작 열을 구함
$list = array();
$sql = " select *
$sql_common
$sql_order
limit $from_record, $rows ";
$result = sql_query($sql);
for ($i=0; $row=sql_fetch_array($result); $i++) {
$list[$i] = $row;
// 순차적인 번호 (순번)
$num = $total_count - ($page - 1) * $rows - $i;
// 게시물 제목
$tmp_write_table = $g5['write_prefix'] . $row['bo_table'];
$sql3 = " select wr_subject from $tmp_write_table where wr_id = '{$row['wr_id']}' ";
$row3 = sql_fetch($sql3, FALSE);
$subject = get_text(cut_str($row3['wr_subject'], 100));
if (!$row3['wr_subject'])
$row3['wr_subject'] = '[글 없음]';
$list[$i]['subject'] = $subject;
}
혹시 여기에 오류가 있을까요?
!-->!-->답변 4
첫번째 쿼리에 문제가 있네요
$sql_common ="SELECT b.*
FROM g5_board as a , g5_board_good as b
WHERE a.gr_id='gr_1'
AND a.bo_table=b.bo_table
AND b.mb_id = '".$member['mb_id']."'
AND b.bg_flag = 'good' ";
1. $sql = " select count(*) as cnt $sql_common";
2. $sql = " select *
$sql_common
$sql_order
limit $from_record, $rows ";
}
slq_common 이라는 변수의 값은 하나의 완성된 쿼리입니다.
1번 변수에 해당(sql_common) 변수가 들어가게 되면 select count(*) as cnt select b.* from ...
이런식으로되고
2번 변수에 해당(sql_common) 변수가 들어가면 select * select b.* from ...
이런식으로 sql 문법이 전혀 맞지 않아 오류가 되겠죠?
그러므로 sql_common 변수를 1번, 2번 변수에 넣어도 문법적인 오류가 없도록 변경하셔야 합니다.
또한 b.* 보다는 사용하는 컬럼을 지정하여 불러오도록 하시는 것이 더욱 좋을 듯 합니다.
!-->
$sql="SELECT b.*
FROM g5_board as a , g5_board_good as b
WHERE a.gr_id='gr_1'
AND a.bo_table=b.bo_table
AND b.mb_id = '".$member['mb_id']."'
AND b.bg_flag = 'good'
ORDER BY b.bg_id LIMIT 100";
$sql_order = " order by ms_id desc ";
$sql = " select count(*) as cnt $sql_common ";
$row = sql_fetch($sql);
$total_count = $row['cnt'];
여기서 보면 $sql이란는 변수에 " select count(*) as cnt $sql_common " 가 들어가는데
$sql="SELECT b.*
FROM g5_board as a , g5_board_good as b
WHERE a.gr_id='gr_1'
AND a.bo_table=b.bo_table
AND b.mb_id = '".$member['mb_id']."'
AND b.bg_flag = 'good'
ORDER BY b.bg_id LIMIT 100";
이부분은 사용되지 않고있습니다.
소스에 $sql_common 사용되어지는 부분이 보여지지 않네요
$sql을 $sql_common 으로 바꾸었습니다 이렇게 하라는 뜻인건가요??
$sql_common = "SELECT b.*
FROM g5_board as a , g5_board_good as b
WHERE a.gr_id='gr_1'
AND a.bo_table=b.bo_table
AND b.mb_id = '".$member['mb_id']."'
AND b.bg_flag = 'good'
ORDER BY b.bg_id LIMIT 100";