값 가져오기 > 십년전오늘

십년전오늘

10년전 추억의 책장을 넘기며

값 가져오기 정보

값 가져오기

본문

DB에 저장된 값을 가져오는 여러가지 방법중 몇가지를 이야기 해 볼게요.

일단 기본적으로 "select * from xxx" 이나 뒤에 조건문으로 조건에 맞는 자료를 불러와야 겠조.

여기서 그누보드에서 사용하는 방식은 바로 mysql_fetch_array 함수를 이용하고 있습니다..

사실 이와 관련된 전문용어들이 있는데 별로 안쓰다보니 기억이 가물가물하네요.

각설하고. 저걸루 불러오면 각 필드값으로 참조가 가능합니다. 즉 그누보드를 예를 들면

$mb="select * from $cfg[table_member]";

요런게 있다면 앞으로 $mb[mb_id] 라고 하거나 $mb[0] 이렇게 하면 mb_id에 관한 필드값을

참조할 수 있게되는 것이조.

다른방법도 있습니다.

mysql_result($mb,0,0);

이렇게 하면 불러온 값의 0번째줄의 0번째 필드값을 조회하게 됩니다.

그러면 mysql_result($mb,1,1) 이면 다음줄의 1번째 필드값을 조회하게 되겠조.

이것을 응용하면

for($i=$start;$i<$last;$i++){
if($i<$total_num){
$my_uid=mysql_result($result,$i,0);
$my_fid=mysql_result($result,$i,1);
$my_name=mysql_result($result,$i,2);
$my_email=mysql_result($result,$i,3);
$my_hpage=mysql_result($result,$i,4);
}}

이건 제가 젤 첨 배울때 썻던 소스 인데요. 그때는 mysql_result를 더 많이 썻었조.
상황에 따라 다르긴 하지만 적은 디비와 필드수라면 이 함수가 더 빠른것으로 알고 있구요.

이것은 주로 list 뽑을 때 쓰게되는데요. $start는 시작 $last는 몇개까지 리스팅 할것인가.
$total_num은 총 글수가 리스팅 갯수보다 적을수도 있으니 .. 아무튼지간에 총글수 안에서
뽑아내라 이말이구요.
$i는 반복되는 숫잘 제한 하는데에 쓰이면서 ($result,$i,4); 이런식으로 DB를 순차적으로 그러나
제한되게 뽑아 오는데에도 응용되조.

그누보드와는 좀 다르긴 하지만 과거부터 애용되던 방법으로 한번 소개해 보았습니다.
그누보드에서도 간혹 본거 같긴 하네요.

본래 용도는 같지만, 사실상 근래엔 조금 용도를 달리 하여 사용중이구요. 과거 이방법을 선호하던분들도
mysql_fetch_array의 여러 장점이 손에 익다보니 자연스레 옮겨오더군요.

이외에 잘쓰지는 않지만 외국 소스나 몇몇 공개 게시판에서 쓰이고 있는 mysqLfetch_object란게 있습니다.

[이 게시물은 홍석명님에 의해 2004-03-30 09:22:35 PHP Forum(으)로 부터 이동됨]

[이 게시물은 관리자님에 의해 2004-05-12 09:08:32 연재(으)로 부터 이동됨]

댓글 전체

그렇지만
제가 질문한 방법일거 같으면
$bb[3] 이렇게 불러올라믄 역시 explode를 해서 그중에서 $bb 에서 4번째를 불러와야되겠지요?
으~ 어렵군요....
$aa=mysql_query("쿼리문");
$bb=mysql_fetch_array($aa)는 변수에 필드명으로 참조하여 값을 불러 올 수도 있지만
예를 들어 $bb[필드명],  이것말고 $bb[0]으로 불러 올수 도 있습니다.

즉 그누보드 회원테이블 보면 $bb[0]은 무엇일까요?
순차적으로 불러 오기 때문에 이것은 $bb[mb_id] 와 같은 동작을 보입니다.
위와같은 경우수정할때는 먼저 일단 explode로 나눈다음에 각각의 배열인자중에서 해당되는 값을 변경시켜줍니다.
그런다음 implode('|',$m_memo) 이용해서 다시 묶어준다음 디비에 저장하면됩니다.
네.... 답변 감사합니다...이해가 잘 되는 군요...

그런데요 위방법을 쓴다면

출력에대해서만이 아니고 저장할때요...

***잘라진 것들을 엮어서 저장해야 할거 같은데요... 그방법은...

음 머라 표현을 못하겟군요.....php하나두 몰라서요...

전 그냥 액션스크립트랑 비슷한부분이 많아서,

그누 사용시 대충 때려서 맞추어 노가다로 사용하는관게로..

하나를 갈쳐주면 하나를 더갈쳐달라고하네요....지성합니다....
참 깜빡한게 있는데요. 위의 방법은 주로 파일로 데이타를 저장할때 자주 쓰일 겁니다.

음..문장이 파일로 저장되는 셈이조.

그리고 불러 올때도 파일채 불러와 수정하고 다시 저장하구요.

음..제가 자주애용해 보았던 거라면 팁도 드리고 싶은데 그다지..

음..막 떠오른 방법인데요.

preg_replace 와 같은 함수로 기존 $memo라는 파일을 불러와 저장한 변수에

$a1이란 단어가 있다면 이를 대체 해주면 수정기능이 되지 않을려나...ㅋㅋ

아무튼 답변이 잘 됬는지 모르겠습니다.
PHP에서 자주 쓰이지 않는방법 같군요. 아니 저만 그런가요?^^;

음..주로 Perl에서 자주 보았던 방법이군요...

그리고 위에 소스는 불완전 한듯 싶네요.

일단 소스를 해석 해보면요.

explode는 구분자를 기준으로 나누어 배열로 저장하는 함수입니다.

$m_memo = explode("|",$memo);
$a1  = $m_memo[0];
$a2  = $m_memo[1];

어느것이 불완전 하냐고한다면, 예를 하나 들어 드리지요.
위에 $memo는 구분자를 기준으로 write된 문장일 겁니다.
예) 이름 | 케빈 | 성별 | 여 | 주소 | 서울
이런식으로 구분자로 나누어 적혀 있는 것이조.

그러면 위에 $m_memo = explode("|",$memo); 에서는 구분자 | 를 기준으로 각 단어나 문장을 배열로 저장합니다.
구분자는 물론 임의로 지정 가능하구요. 그냥 대략 "|" 가 많이 쓰이긴 합니다.(L이 아닙니다.shift + \) 입니다.)
 
$a1  = $m_memo[0];  // 이름
$a2  = $m_memo[1];  // 케빈
...

echo $a1;
하면 이름이 출력 되겠지요?
항상 잘보고 있읍니다.
고마운 마음을 가지고요...

그런데요..
어디선가 보니까
필드를 추가하지 않고도...배열(?)을 이용해서
데이터를 읽어다 뿌려주고 저장하는 소스를 보앗는데요..


$m_memo = explode("|",$memo);
$a1  = $m_memo[0];
$a2  = $m_memo[1];
$a3  = $m_memo[2];
$a4  = $m_memo[3];
$a5 = $m_memo[4];
$a6 = $m_memo[5];
$a7 = $m_memo[6];
$a8 = $m_memo[7];
$a9 = $m_memo[8];
$a10 = $m_memo[9];
$a11 = $m_memo[10];
$a12 = $m_memo[11];
$a13 = $m_memo[12];

$a14 = $m_memo[13];
$a15 = $m_memo[14];
$a16 = $m_memo[15];
$a17 = $m_memo[16];
$a18 = $m_memo[17];
$a19 = $m_memo[18];
$a20 = $m_memo[19];
$a21 = $m_memo[20];
$a22 = $m_memo[21];
$a23 = $m_memo[22];
$a24 = $m_memo[23];
$a25 = $m_memo[24];
$a26 = $m_memo[25];
$a27 = $m_memo[26];
$a28 = $m_memo[27];
$a29 = $m_memo[28];
$a30 = $m_memo[29];
$a31 = $m_memo[30];
$a32 = $m_memo[31];
$a33 = $m_memo[32];
$a34 = $m_memo[33];
$a35 = $m_memo[34];
$a36 = $m_memo[35];
$a37 = $m_memo[36];
$a38 = $m_memo[37];
$content = $m_memo[38];
이런식으로요...

이방법에 대해서 설명 해주시면 안될까요..?

그누에 적용해볼라고 발버둥을 쳐도 안댑니다..
전체 252
십년전오늘 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT