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