게시글 데이터를 다른 페이지에서 불러올 때 foreach 와 for 차이 채택완료
coDribble
11개월 전
조회 2,346
</p>
<p><?php</p>
<p>$sql = " select * from {$write_table} where wr_is_comment = 0 order by wr_id desc ";
$result = sql_query($sql);</p>
<p> </p>
<p>foreach ( sql_fetch_array($result) as $row )
{
echo $row['wr_subject'];
?></p>
<p><?php
}</p>
<p>for($i=0;$row=sql_fetch_array($result);$i++)
{
echo $row['wr_subject'];
?>
<?php
}
?></p>
<p>
위처럼 foreach 로 게시글 데이터를 출력하면 한글이 깨지고,
for 로 돌리면 제대로 출력되는데
차이가 왜 생기는지가 궁금합니다...;;
어쩔땐 foreach 로 돌려도 제대로 출력되던데... 또 어쩔땐 외계어로 한글이 깨지더라구요...;;
댓글을 작성하려면 로그인이 필요합니다.
답변 2개
채택된 답변
+20 포인트
미니님a
Expert
11개월 전
for문은 매 반복마다 sql_fetch_array()를 실행하여 다음 행을 순차적으로 가져옵니다.
sql_fetch_array()는 DB에서 데이터를 원래 인코딩 그대로 가져옵니다.
다만 foreach 의 경우는 결과를 한번만 실행하고 그 결과 배열의 각 요소를 순환합니다.
따라서, 와일문 사용을 하시면 해결할 수 있습니다.
</p>
<p>while($row = sql_fetch_array($result)) {</p>
<p>echo $row['wr_subject'];</p>
<p>}</p>
<p>
로그인 후 평가할 수 있습니다
답변에 대한 댓글 1개
c
coDribble
11개월 전
댓글을 작성하려면 로그인이 필요합니다.
sinbi
Expert
11개월 전
</p>
<p><?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);</p>
<p>foreach ( sql_fetch_array($result) as $k => $v)
{
echo $k.' - '.$v.'
';
}
?></p>
<p>
foreach 반복문: 1개 배열(= 맨 처음 라인의 레코드)에 대해서 키와 값을 출력하는 구조
로그인 후 평가할 수 있습니다
답변에 대한 댓글 1개
c
coDribble
11개월 전
답변 감사드립니다!
미니님 답변과 신비님 답변으로 fetch array 는 한 번만 실행한다는 것을 알게 됐습니다! :)
채택드리지 못해 죄송합니다ㅠ
미니님 답변과 신비님 답변으로 fetch array 는 한 번만 실행한다는 것을 알게 됐습니다! :)
채택드리지 못해 죄송합니다ㅠ
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
말씀해주신 내용을 제가 이해한 거로는 $result 가 배열로 잡히고, $result 안에 다시 배열로 게시글들의 데이터들이 담겨있어서 fetch array 는 한 번만 실행되기 때문에 하나의 게시글 데이터의 정보만 출력한다...는 이해가 됐습니다!
그런데 데이터를 원래 인코딩 그대로 가져온다는게 이해가 잘 되질 않네요;;
하나의 게시글만 불러와서 fetch array 하면 안깨지고 제대로 출력될 것 같은데... 이 경우에도 인코딩 그대로 가져온다면 깨져야하는게 아닌가요...??? ㅇ.ㅇ;;