$room = sql_query(" select * from {$g5['r_table']} where (1) and `r_use` = 'y' ");
foreach($room as $key => $val) {
$div .= '<option value="'.$val['r_idx'].'">'.$val['r_name'].'</option>';
}
r_table에 r_use인 레코드가 2개 있다고 가정하면...
r_idx 필드와 r_name필드로 셀렉트 박스를 보여주려고 합니다.
while문으로 많이 해봤는데 foreach문으로 하려니 에러가 나네요..ㅎ
고수님의 가르침을 기다립니다. 감사합니다.
답변 5개 / 댓글 8개
sql_query() 로 가져온 값으로는 foreach()를 쓸 수 없습니다.
sql_fetch_array 으로 쓰셔야 합니다.
while($row = sql_fetch_array($result)
$div .= '<option value="'.$row['r_idx'].'">'.$row['r_name'].'</option>';
이렇게 쓰셔야 합니다.
답변에 대한 댓글 4개
$sql = " select * {$sql_common} {$sql_search} {$sql_order} limit {$from_record}, {$rows} ";
$result = sql_query($sql);
foreach($result as $k=>$v){
print_r($v);
php 7.0 대에서 확인해보니깐 잘 되네요.
오 ~ 새로운 거 배웠네요. 감사 합니다. ^^
답변에 대한 댓글 2개
저는 그 5.0.X 버전이라 안되었구요...ㅠㅠ
그래서
foreach 문을 주석처리하고 아래와 같이 처리했습니다.
//foreach($result as $key => $val) {
while ($val = sql_fetch_array($result)) {
$data[] = $val;
$div[] = unserialize($val['div_info']);
}
신기하게 쿼리는 mysql에서 수행하고 배열에 넣어주는데
php버전과 무슨 상관이 있을까요?
그리고 또 한가지가 있더군요.
필드에 값을 추가할때 가변필드(무한대)처리가 쉬워졌다는것...
2차원 배열에 들어있는 날짜값을 아래처럼 루프를 돌리면 에러가 안납니다.
date('Y-n-j', strtotime($data[$i]))
날짜가 없다고 경고가 떠서 첨자를 아래와 같이 설정하니 값이 나오더군요.
date('Y-n-j', strtotime($data[0][$i]))
암튼 상위버전으로 갈수록 이상해져 가는것 같습니다..ㅎㅎ
이렇게 또 한가지씩 배워가는군요. 고맙습니다.
for($i=0; $row=sql_fetch_array($room); $i++) {
이렇게 사용하셔야 합니다.
sql_fetch_array 이 구분이 들어가야 배열로 값을 가져옵니다.
foreach($room as $key => $val) {
print_r2($key);
print_r2($val);
}
먼저 확인해 보세요
답변을 작성하려면 로그인이 필요합니다.
금번에 제작의뢰를 했더니 위와 같이 플밍이 되어 있네요.
mysql 상위 버전에서는 가능할 수도 있다고 생각합니다.
좀더 검색해 보고 이유를 찾아봐야겠습니다.
댓글 고맙습니다.