묻고답하기
DB의 값을 한번에 가져오는 방법..
2015.07.02 12:37
우선 테이블의 구조는 다음과 같습니다.
prob_no nick_name time
1 관리자 2015-07-02 12:00
4 관리자 2015-07-02 13:00
3 관리자 2015-07-02 14:00
위 테이블은 유저가 문제를 풀면 푼 문제의 번호, 해당 유저의 닉네임, 문제를 푼 시간
이 정보들이 기록되고 시간 순으로 정렬되게 됩니다.
제가 사용한 코드는 다음과 같구요.
<?php $clear_check = mysql_fetch_row(mysql_query("SELECT prob_no FROM prob_check WHERE nick_name="관리자")); ?>
우선 쿼리문을 DB관리 프로그램(heidiSQL)에 넣고 돌려보니 정상적으로
prob_no
1
4
3
이렇게 출력되구요.
이걸 가져와서 mysql_fetch_row를 사용해서 echo $clear_check[0].$clear_check[1].$clear_check[2]; 이렇게 불러오는데
항상 첫번째 값인 1만 가져오더라구요.
뒤에 4와 3이라는 값은 못 가져오고 있습니다...
원인이 뭘까요?
mysql_fetch_row 대신 mysql_fetch_array를 써도 마찬가지입니다.
mysql_fetch_array는 한 줄만 가져와서 배열로 정리하는 것 같더라구요.
제가 알기로 mysql_fetch_row는 한 열을 가져오기 때문에 1,4,3이라는 값을 한번에 가져와서
$clear_check[0] 이런식으로 불러올 수 있다고 알고 있었습니다..
어디가 틀렸을까요??
혹은 저렇게 prob_no에 해당되는 값을 모두 가져오려면 어떻게 해야할까요?
댓글 5
-
제노0248
2015.07.02 13:01
-
제노0248
2015.07.02 13:12
자문자답합니다...
$clear_check = mysql_query("SELECT prob_no FROM prob_check WHERE nick_name='$nick'");
$fields = mysql_num_fields($clear_check);while($row = mysql_fetch_row($clear_check))
{
for($i=0;$i<$fields;$i++)
echo $row[$i]."<br>";
}이런 방법으로 가져왔습니다만...
while($row = mysql_fetch_row($clear_check))가 무슨 의미인가요???
어째서
$row = mysql_fetch_row($clear_check);
echo row[0];
echo row[1];
echo row[2];
로 할때는 출력 안되더니 저렇게 하니까 출력되네요..
무슨 차이인가요??
-
제노0248
2015.07.02 13:34
mysql_fetch_array를 쓰던 mysql_fetch_row를 쓰던 while을 이용해서 불러오면 둘다 결과값은 같네요..
-
ehii
2015.07.02 16:40
전체 결과값을 array및 객체로 저장하려면 간단히 XE의 db::getinstance class로 구현할 수 있습니다.
http://xpressengine.github.io/xe-manual-api/html/classDB.html#a16f4a668b6429b4b9af5132cbf885213
$oDB = &DB::getInstance(); $query = $oDB->_query("SELECT prob_no FROM prob_check WHERE nick_name='관리자';"); $result = $oDB->_fetch($query); if(!is_array($result)) $result = array($result); echo($result[0]->prob_no); echo($result[1]->prob_no); echo($result[2]->prob_no);
mysql_fetch_array나 mysql_fetch_row 모두 결과값을 한 줄씩 가져와 field별로 array 또는 객체로 저장합니다.
다음 줄을 계속 가져오려면
$clear_check = mysql_query("SELECT prob_no FROM prob_check WHERE nick_name='$nick';");
$row = mysql_fetch_row($clear_check);
echo($row[0]);
$row = mysql_fetch_row($clear_check);
echo($row[0]);
이렇게 계속 fetch_row로 불러주어야 합니다. 이를 간단히 쓴게 while문이지요.
-
제노0248
2015.07.02 17:53
감사합니다 fetch_row에 대한 이해가 되었습니다.
답변 보기 전에도 엄청 노가다를 하고 있었거든요..
전 fetch_array한 값들을 매번 다른 배열에 넣어주는 방법으로 값을 저장해놓고
다시 불러다 쓰는 방법을 썼습니다.
답변 감사합니다^^
근데 mysql_fetch_array()로는 여러 데이터가 있더라도 가장 처음의 한 줄만 가져올 수 밖에 없나요?