테스트 사이트 - 개발 중인 베타 버전입니다

sql 출력 때문에 질문드립니다. 채택완료

페레이라 2년 전 조회 1,941

특정조건으로 다수의 wr_id 값을 얻었습니다. 
이걸 다른 게시판에 해당 wr_id 가 포함되어 있는 게시글을 모두 찾아 출력하려고 합니다. 
and로 여러 개 wr_id 연결하니 출력이 제대로 안 되는데 방법이 없을까요?

 

 

 

 

 

include_once($board_skin_path."/sql_search.php");

$sql = " select

            *

          $sql_common

          $sql_search

          $sql_order";

$result = sql_query($sql, true);</p>

<p>$sql_search = "where mb_id != '' ";</p>

<p>foreach ($result as $key => $value) {

    $sql_search .= " and wr_id = '{$value['wr_id']}' ";

}</p>

<p> </p>

<p>// 출력

$sql = "select

             *

        from

            g5_write_{$table_to}

        $sql_search

        order by

            wr_id asc";

$result = sql_query($sql);

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

답변 5개

채택된 답변
+20 포인트

AND 연산자 대신 IN 연산자를 활용해서 다음과 같이 수정해 보시면 어떨까 합니다

</p>

<p>$wr_ids = array();

foreach ($result as $key => $value) {

    $wr_ids[] = $value['wr_id'];

}

$wr_ids_str = implode(',', $wr_ids);</p>

<p>// 출력

$sql = "SELECT *

        FROM g5_write_{$table_to}

        WHERE wr_id IN ({$wr_ids_str})

        ORDER BY wr_id ASC";</p>

<p>$result = sql_query($sql);

이렇게 했을때 특정조건으로 wr_id 값을 얻었을때 wr_id가 포함된 모든 게시글을 출력 할 수 있을 것으로 생각합니다.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

페레이라
2년 전
감사합니다. 잘 출력 됩니다. ^^

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

DB modeling에서

M:N 관계를 한번 검토해 보세요.

로그인 후 평가할 수 있습니다

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

 

for($i=0;count($search_id)>$i;$i++)

{

 if($i==0)

{

$where = " and (wr_id='".$search_id[$i]."' ";

}else{

 $where .= " or wr_id='".$search_id[$i]."' ";

}

}

이런식으로 해도 됩니다. in보다는 속도는 빠를거에요

로그인 후 평가할 수 있습니다

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

여기 오셔서 많은 얘기 나누면서 고민 해결에 도움이 되세요

https://open.kakao.com/o/gzNuQjhe" rel="nofollow noreferrer noopener" target="_blank">https://open.kakao.com/o/gzNuQjhe

로그인 후 평가할 수 있습니다

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

2년 전

</p>

<p>$sql = "select * from $sql_common $sql_search $sql_order";</p>

<p>$result = sql_query($sql);</p>

<p>$search_id = array();</p>

<p>for($i=0;$row=sql_fetch_array($result);$i++) {</p>

<p>    $search_id[] = $row['wr_id'];</p>

<p>}</p>

<p> </p>

<p>//출력</p>

<p>$sql = "select * from g5_write_{$table_to} where mb_id != '' and wr_id IN (".implode(",",$search_id).") order by wr_id asc";</p>

<p>$result = sql_query($sql);</p>

<p>

 

$search_id 의 갯수가 많아질 경우 속도는 장담을 못하겠습니다.

 

 

로그인 후 평가할 수 있습니다

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

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

로그인