채택완료

sql 문장 문의드립니다

2017-06-14 (수) 11:22:33 4,276

추천 누른 게시물을 불러오는 쿼리 문장인데요 

$query = sql_query("SELECT * FROM g5_board_good WHERE mb_id = '".$member['mb_id']."' AND bg_flag = 'good' ORDER BY bg_id LIMIT 5");

이것을 전체가 아닌 그룹에서만 하는거라서 

Copy
$sql="SELECT b.*  FROM g5_board as a , g5_board_good as b WHERE a.gr_id='1'AND a.bo_table=b.bo_tableAND 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 문장에 오류가 있는 부분이 있으면 알려주시면 감사하겠습니다 

게시물 제목만 불러오는걸로 했고요 상하단 루트는 구지 안적었습니다 

Copy
$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_tableAND 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개 / 댓글 1개

채택된 답변
+20 포인트
2017-06-14 (수) 13:48:15

첫번째 쿼리에 문제가 있네요

Copy
$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.* 보다는 사용하는 컬럼을 지정하여 불러오도록 하시는 것이 더욱 좋을 듯 합니다.


  

2017-06-14 (수) 12:06:32

$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";


이렇게 바꿔도 안불러와지는데 혹시 더 봐주실분 계실까여? 
도움좀 부탁드릴게여 

답변에 대한 댓글 1개

$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' ";


$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;

}


여기에 오류가 있을까여? 왜 안불러오는건지;;;;
이리저리 수정해봐도 안불러옵니다

소스에 $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_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";

​이부분은 사용되지 않고있습니다.

답변을 작성하려면 로그인이 필요합니다.