sql 출력 때문에 질문드립니다. 채택완료
특정조건으로 다수의 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개
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개
댓글을 작성하려면 로그인이 필요합니다.
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
댓글을 작성하려면 로그인이 필요합니다.
</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 의 갯수가 많아질 경우 속도는 장담을 못하겠습니다.
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인