[차례]  [함수색인] Wel 도움말 문서 [이전]  [다음]
대분류: Database
소분류: 레코드 읽기
mysql_fetch_object() 작성일: 2001/06/18
수정일: 2002/07/05

1. 형식 형식1) result= mysql_fetch_object(myres_ptr) 형식2) result= mysql_fetch_object(myres_ptr, prefix) 2. 기능: 인자 myres_ptr의 임시 저장된 결과 자료에서 한 레코드씩 순차적으로 읽어 객체의 맴버변수로 항목의 값을 얻는다. 이때 형식1)은 데이터베이스의 항 목 명칭과 같은 변수명의 맴버변수, 형식2)에서 인자 prefix로 지정한 접 두사가 포함된 항목 명칭의 맴버변수, 항목 명칭과 무관하게 인자 prefix에 순번을 부여한 변수명의 맴버변수로 값을 얻어올 수 있다. 3. 설명 (1) 이 함수는 MySQL에서 지원하지 않으며 mysql_fetch_row()를 응용한 것이다. (2) 인자 myres_ptr은 MySQL result 포인터이며 mysql_store_result()함수나 기타 결과를 저장하는 함수에 의하여 얻은 값이고 MySQL result 포인터가 아니면 에러 처리되며, 이미 해제된 MySQL result 포인터일 때에는 경고 메시지를 출력하고 result에 -1 의 값을 되돌린다. (3) 형식1)은 데이터베이스의 항목 명칭과 동일한 맴버변수에 값이 돌려진다. (4) 형식2)는 인자 prefix에 의해 응용된 명칭의 맴버변수에 값이 돌려진다. (5) 인자 prefix는 문자열이어야 하며 문자열이 아니면 형변환된다. (6) 인자 prefix가 15 문자(bytes)를 초과하거나 그 값이 변수명 작성규칙(첫글자 는 영문/한글, 그 다음부터는 숫자도 조합가능)에 위배되면 에러 처리된다. (7) 인자 prefix의 값이 '#'으로 끝나면 '#' 문자를 제외한 명칭에 순번(1 부터 항목개수)을 부여한 변수명으로 값이 돌려지며, '#'으로 끝나지 않으면 prefix의 값에 데이터베이스의 항목명칭을 조합한 변수명에 값이 돌려진다. (예를 들어 myres_ptr의 대상 항목의 명칭이 각각 name과 addr이고 prefix의 값이 "DB"이면 이 함수를 수행한 후에는 name 항목의 값은 DBname , addr 항 목의 값은 DBaddr에 기억되며, prefix의 값이 "Field#"과 같이 '#'으로 끝나 면 name 항목의 값은 Field1 , addr 항목의 값은 Field2에 기억된다) (8) myres_ptr의 항목명이 변수명 작성규칙에 위배되면 그 항목은 field + 항목 순번(1부터)의 변수명에 값이 돌려진다.(예를 들어 3번째 항목의 항목명이 234abc와 같이 될 수 있다면 그 항목의 값은 field3의 변수명에 기억된다) (9) 인자 prefix의 값이 NULL 또는 ""이면 형식1)과 같다. (10) 위의 설명에 관련된 맴버변수를 지닌 객체가 result에 돌려진다. (11) result의 값이 객체가 아닌 정수 -1(MYSQL_ERR)이면 에러가 발생한 경우이다. 4. 사용예#1 // 아래 프로그램은 MySQL 서버가 정상 작동하지 않거나 또는 welhelp 라는 // 데이터베이스가 없거나 addr 이라는 테이블이 없으면 에러가 발생한다. mysql= mysql_connect(NULL, myuser, mypass); // localhost에 연결함 if(mysql==MYSQL_ERR) { print("MySQL 서버 연결 에러!\n"); return(-1); } if(mysql_select_db(mysql, "welhelp")==MYSQL_ERR) // welhelp database 선택 { print("welhelp database 선택 에러!\n"); return(-1); } query= "select * from addr"; // addr 테이블의 모든 항목을 선택 myres= mysql_query_result(mysql, query); if(myres==MYSQL_ERR) { print("query error!!\n"); return(-1); } if(myres==NULL) { print("store result error!\n"); return(-1); } while( (rec=mysql_fetch_object(myres))!=MYSQL_ERR ) { print("\t", rec.name); // addr 테이블의 name 항목의 값은 rec.name print("\t", rec.age); // addr 테이블의 age 항목의 값은 rec.age print("\t", rec.address); // addr 의 address 항목의 값은 rec.address print(); // 줄을 빠꿔준다. } mysql_free_result(myres); // 임시 저장된 자료를 해제(free)한다. mysql_close(mysql); // MySQL 서버와의 접속을 해제한다. ------------------------------ [ 출력결과 ] ------------------------------ 홍길동 28 xx시 xx동 123번지 한여름 35 oo시 oo동 456번지 서지연 20 A시 B동 789번지 5. 사용예#2 // 아래 프로그램은 MySQL 서버가 정상 작동하지 않거나 또는 welhelp 라는 // 데이터베이스가 없거나 addr 이라는 테이블이 없으면 에러가 발생한다. mysql= mysql_connect(NULL, myuser, mypass); // localhost에 연결함 if(mysql==MYSQL_ERR) { print("MySQL 서버 연결 에러!\n"); return(-1); } if(mysql_select_db(mysql, "welhelp")==MYSQL_ERR) // welhelp database 선택 { print("welhelp database 선택 에러!\n"); return(-1); } query= "select * from addr"; // addr 테이블의 모든 항목을 선택 myres= mysql_query_result(mysql, query); if(myres==MYSQL_ERR) { print("query error!!\n"); return(-1); } if(myres==NULL) { print("store result error!\n"); return(-1); } while( isobject(rec=mysql_fetch_object(myres, "m_")) ) { print("\t", rec.m_name); // addr 의 name 항목의 값은 rec.m_name print("\t", rec.m_age); // addr 의 age 항목의 값은 rec.m_age print("\t", rec.m_address); // addr의 address항목의 값은 rec.m_address print(); // 줄을 빠꿔준다. } mysql_free_result(myres); // 임시 저장된 자료를 해제(free)한다. mysql_close(mysql); // MySQL 서버와의 접속을 해제한다. ------------------------------ [ 출력결과 ] ------------------------------ 홍길동 28 xx시 xx동 123번지 한여름 35 oo시 oo동 456번지 서지연 20 A시 B동 789번지 6. 사용예#3 // 아래 프로그램은 MySQL 서버가 정상 작동하지 않거나 또는 welhelp 라는 // 데이터베이스가 없거나 addr 이라는 테이블이 없으면 에러가 발생한다. mysql= mysql_connect(NULL, myuser, mypass); // localhost에 연결함 if(mysql==MYSQL_ERR) { print("MySQL 서버 연결 에러!\n"); return(-1); } if(mysql_select_db(mysql, "welhelp")==MYSQL_ERR) // welhelp database 선택 { print("welhelp database 선택 에러!\n"); return(-1); } query= "select * from addr"; // addr 테이블의 모든 항목을 선택 myres= mysql_query_result(mysql, query); if(myres==MYSQL_ERR) { print("query error!!\n"); return(-1); } if(myres==NULL) { print("store result error!\n"); return(-1); } while( isobject(rec=mysql_fetch_object(myres, "dbf#")) ) { print("\t", rec.dbf1); // addr 의 name 항목의 값은 rec.dbf1 print("\t", rec.dbf2); // addr 의 age 항목의 값은 rec.dbf2 print("\t", rec.dbf3); // addr 의 address 항목의 값은 rec.dbf3 print(); // 줄을 빠꿔준다. } mysql_free_result(myres); // 임시 저장된 자료를 해제(free)한다. mysql_close(mysql); // MySQL 서버와의 접속을 해제한다. ------------------------------ [ 출력결과 ] ------------------------------ 홍길동 28 xx시 xx동 123번지 한여름 35 oo시 oo동 456번지 서지연 20 A시 B동 789번지

Wel Version 1.0
[차례]  [함수색인] [이전]  [다음]