게시글 데이터를 다른 페이지에서 불러올 때 foreach 와 for 차이

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
게시글 데이터를 다른 페이지에서 불러올 때 foreach 와 for 차이

QA

게시글 데이터를 다른 페이지에서 불러올 때 foreach 와 for 차이

답변 2

본문


<?php
$sql = " select * from {$write_table} where wr_is_comment = 0 order by wr_id desc ";
$result = sql_query($sql);
 
foreach ( sql_fetch_array($result) as $row )
{
    echo $row['wr_subject'];
?>
<?php
}
for($i=0;$row=sql_fetch_array($result);$i++)
{
    echo $row['wr_subject'];
?>
<?php
}
?>

 

위처럼 foreach 로 게시글 데이터를 출력하면 한글이 깨지고,

for 로 돌리면 제대로 출력되는데

차이가 왜 생기는지가 궁금합니다...;;

 

어쩔땐 foreach 로 돌려도 제대로 출력되던데... 또 어쩔땐 외계어로 한글이 깨지더라구요...;;

이 질문에 댓글 쓰기 :

답변 2

for문은 매 반복마다 sql_fetch_array()를 실행하여 다음 행을 순차적으로 가져옵니다.

sql_fetch_array()는 DB에서 데이터를 원래 인코딩 그대로 가져옵니다.

다만 foreach 의 경우는 결과를 한번만 실행하고 그 결과 배열의 각 요소를 순환합니다.

 

따라서, 와일문 사용을 하시면 해결할 수 있습니다.


while($row = sql_fetch_array($result)) {
echo $row['wr_subject'];
}

답변 감사드립니다!
말씀해주신 내용을 제가 이해한 거로는 $result 가 배열로 잡히고, $result 안에 다시 배열로 게시글들의 데이터들이 담겨있어서 fetch array 는 한 번만 실행되기 때문에 하나의 게시글 데이터의 정보만 출력한다...는 이해가 됐습니다!
그런데 데이터를 원래 인코딩 그대로 가져온다는게 이해가 잘 되질 않네요;;

하나의 게시글만 불러와서 fetch array 하면 안깨지고 제대로 출력될 것 같은데... 이 경우에도 인코딩 그대로 가져온다면 깨져야하는게 아닌가요...??? ㅇ.ㅇ;;


<?php
$write_table = 'g5_write_free';
$sql = " select * from {$write_table} where wr_is_comment = 0 order by wr_id desc ";
$result = sql_query($sql);
foreach ( sql_fetch_array($result) as $k => $v)
{
    echo $k.' - '.$v.'<br>';
}
?>

 

foreach 반복문: 1개 배열(= 맨 처음 라인의 레코드)에 대해서 키와 값을 출력하는 구조

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 126,530
© SIRSOFT
현재 페이지 제일 처음으로