<?
//[주의]: 무단수정을 금해 주세요
//------------------------------------------------ -----------------------------
//------------------------------------------------ -----------------------------
//
// [파일명] : c_ora_db.inc
// [함수]: Oracle 공용 함수 클래스
// [저자]: 티안 후이
//
// [최종 수정 날짜]: 2001/05/11[cxx]
// [변수 정의 규칙]: 'C_'=문자형,'I_'=정수형,'N_'=숫자형,'L_'=불리언형,'A_'=배열형
//------------------------------------------------ -----------------------------
//------------------------------------------------ -----------------------------
// ※db_logon()은 데이터베이스 연결을 엽니다.
// ※db_query() 일반 선택
// ※db_change() 데이터베이스 변경(삽입, 삭제, 업데이트)을 위한 범용 함수
// ※db_insert() 삽입, db_change() 직접 호출
// ※db_delete() 삭제, db_change() 직접 호출
// ※db_update() 업데이트, db_change() 직접 호출
// ※db_commit() 트랜잭션 제출
// ※db_rollback() 트랜잭션 롤백
// ※db_logoff()는 데이터베이스 연결을 끊습니다.
//------------------------------------------------ -----------------------------
클래스 c_ora_db
{
//------------------------------------------------ -----------------------------
// 변수 정의
//------------------------------------------------ -----------------------------
var $C_user = ""; //데이터베이스 사용자 이름
var $C_passwd = ""; //데이터베이스 비밀번호
var $C_db = ""; //데이터베이스 이름
var $I_linkID = 0; //연결 핸들
var $I_stmtID = 0; //쿼리 핸들
var $color = "" //전체 색상
//------------------------------------------------ -----------------------------
//------------------------------------------------ -----------------------------
// 함수 이름: db_logon()
// 기능: 데이터베이스 연결 열기
// 매개변수: 없음
//반환값: 연결 핸들(정수)
// 비고: 없음
//------------------------------------------------ -----------------------------
함수 db_logon()
{
$this->I_linkID = @OCILogon($this->C_user,$this->C_passwd,$this->C_db);
if ($this->I_linkID == 0){AlertExit('데이터베이스 링크에 실패했습니다. DBA에게 문의하세요!');}
$this->I_linkID를 반환합니다.
}
//------------------------------------------------ -----------------------------
//------------------------------------------------ -----------------------------
// 함수 이름: db_query($C_sql,$A_define="",$I_start=-1,$I_end=-1)
// 기능: 선택
// 매개변수: $C_sql sql문
// $A_define 필드를 바인딩합니다. 배열 유형
// $I_start는 레코드 가져오기를 시작합니다. - 1은 쿼리의 모든 레코드를 가져옵니다.
// $I_end는 레코드 가져오기를 종료합니다.
//반환값 : 2차원 배열($A_rs)
// 비고: 해당 필드의 값은 0,1,2....라는 숫자를 통해 접근할 수 있으며, 필드 이름을 쿼리하여 해당 필드의 값에 접근할 수도 있습니다.
// 예를 들어 첫 번째 레코드의 NAME 필드는 $A_rs[0][0] 또는 $A_rs[0]['NAME'] 또는 $A_rs[0]['name']을 통해 액세스할 수 있습니다.
// $I_start, $I_end는 페이징에 사용되는 매개변수입니다.
//------------------------------------------------ -----------------------------
함수 db_query($C_sql,$A_define="",$I_start=-1,$I_end=-1)
{
if (!$C_sql){AlertExit("매개변수가 불완전합니다!");}//매개변수 확인
//연결 감지
if ($this->I_linkID == 0){AlertExit('데이터베이스 링크에 실패했습니다. DBA에게 문의하세요!');}
//형식 감지
$this -> I_stmtID = OCIParse($this -> I_linkID,$C_sql);
if (!$this -> I_stmtID){AlertExit('SQL 형식 오류! 프로그래머에게 문의하세요');}
//바인딩된 필드가 지정되지 않은 경우 SQL 문에서 가져옵니다.
if($A_define=="")
{
$A_Cur = 폭발("선택",$C_sql);
$A_Cur = 폭발("from",$A_Cur[1]);
$A_define = 폭발(",",$A_Cur[0]);
}
//데이터베이스 테이블 필드 바인딩
if(gettype($A_define) == "array") //쿼리 열은 배열입니다.
{
for($i=0;$i<count($A_define);$i++)
{
$A_define_up[$i] = Trim(strtoupper($A_define[$i])) //공백을 대문자로 표시하고 제거합니다.
}
for($i=0;$i<count($A_define_up);$i++)
{
OCIDefineByName($this -> I_stmtID,"$A_define_up[$i]",&$$A_define[$i]) //바인딩
}
}
elseif(trim($A_define) <> "") //쿼리 열이 하나만 있습니다.
{
$A_define_up = 트림(strtoupper($A_define));
OCIDefineByName($this -> I_stmtID,"$A_define_up",&$$A_define);
}
//바인딩된 SQL 문을 실행합니다.
if(!OCIExecute($this -> I_stmtID))
{
echo "<font color=red><b>실행 오류:</b></font>SQL 오류:<font color=red>$C_sql</font><br>";
거짓을 반환;
}
$lower = 0; //2차원 배열의 첫 번째 차원 첨자 제어 변수를 반환합니다.
$cnt = 0; //식별자 가져오기 시작
//기록 가져오기
while (OCIFetchInto($this -> I_stmtID,&$cur,OCI_ASSOC))
{
//쿼리된 모든 레코드를 가져옵니다.
if ($I_start == -1)
{
if (gettype($A_define) == "array") //쿼리 열은 배열입니다.
{
($i=0;$i<count($A_define);$i++)에 대해
{
if ($cur[$A_define_up[$i]] <> $$A_define[$i])
{
$$A_define[$i] = $cur[$A_define_up[$i]];
}
$A_rs[$lower][$i] = $$A_define[$i] //숫자로 접근
$A_rs[$lower][$A_define[$i]] = $$A_define[$i] //더 작은 액세스 사용
$A_rs[$lower][$A_define_up[$i]] = $$A_define[$i] //대문자로 액세스;
}
}
elseif (trim($A_define) <> "") //쿼리 열이 하나만 있습니다.
{
if ($cur[$A_define_up] <> $$A_define)
{
$$A_define = $cur[$A_define_up];
}
$A_rs[$lower][0] = $$A_define; //숫자로 접근
$A_rs[$lower][$A_define] = $$A_define; //소문자로 접근;
$A_rs[$lower][$A_define_up] = $$A_define; //더 큰 액세스 사용
}
$lower++; //아래 첨자 + 1
}
//지정된 레코드 검색(페이징에 사용)
if ($I_start <> -1)
{
if ($cnt >= $I_start)
{
$cnt++;
if ($I_end - $I_start <> 0)
{
$I_end--;
if (gettype($A_define) == "배열")
{
for($i=0;$i<count($A_define_up);$i++)
{
if ($cur[$A_define_up[$i]] <> $$A_define[$i])
{
$$A_define[$i] = $cur[$A_define_up[$i]];
}
$A_rs[$lower][$i] = $$A_define[$i] //숫자로 접근
$A_rs[$lower][$A_define[$i]] = $$A_define[$i] //더 작은 액세스 사용
$A_rs[$lower][$A_define_up[$i]] = $$A_define[$i] //대문자로 액세스;
}
}elseif(trim($A_define) <> "")
{
if ($cur[$A_define_up] <> $$A_define)
{
$$A_define = $cur[$A_define_up];
}
$A_rs[$lower][0] = $$A_define; //숫자로 접근
$A_rs[$lower][$A_define] = $$A_define; //더 작은 액세스 사용
$A_rs[$lower][$A_define_up] = $$A_define; //대문자로 액세스
}
$낮은++;
}또 다른
{
break; //$I_end-$I_start=0이면 레코드를 가져와 while 루프에서 빠져나오는 것을 의미합니다.
}
}또 다른
{
$cnt++; //$cnt<$I_start,$cnt++인 경우
}
}
} //동안의 끝
//핸들을 해제하고 쿼리 데이터(2차원 배열)를 반환합니다.
OCIFreestatement($this -> I_stmtID);
$A_rs를 반환합니다.
} //함수 끝
//------------------------------------------------ ----------------
//------ ------------------------------------- ----------------------------------
// 함수명 : db_change($C_sql,$A_bind)
// 기능: DB 변경
// 매개변수: $C_sql sql문
// $A_bind 필드를 바인딩합니다. 배열 유형
//반환값: 불리언 값
// 참고: 삽입, 삭제, 업데이트가 일반적입니다.
//------------------------------------------------ -----------------------------
함수 db_change($C_sql,$A_bind="")
{
if (!$C_sql){AlertExit("매개변수가 불완전합니다!");}//매개변수 확인
//연결 감지
if($this -> I_linkID==""){ AlertExit("데이터베이스가 사용 중입니다. 나중에 다시 연결하세요!");}
//형식 감지
$this -> I_stmtID = OCIParse($this -> I_linkID,$C_sql);
if (!$this -> I_stmtID){AlertExit('SQL 형식 오류! 프로그래머에게 문의하세요');}
//묶다
if(gettype($A_bind) == "배열")
{
for($i=0;$i<count($A_bind);$i++)
{
전역 $$A_bind[$i];
$$A_bind[$i] = StripSlashes($$A_bind[$i]) //백슬래시 문자 제거
$$A_bind[$i] = str_replace("<?","< ?",$$A_bind[$i]) //PHP 태그 필터링
}
for($i=0;$i<count($A_bind);$i++){
OCIBindByName($this -> I_stmtID, ":$A_bind[$i]", &$$A_bind[$i], -1);
}
}
elseif(trim($A_bind) <> "") //배열이 아니라 문자입니다.
{
글로벌 $$A_bind;
$$A_bind = StripSlashes($$A_bind);
$$A_bind = str_replace("<?","< ?",$$A_bind) //PHP 태그 필터링
OCIBindByName($this -> I_stmtID, ":$arrBind", &$$A_bind, -1);
}
//실행하여 성공 여부 확인
if(!OCIExecute($this -> I_stmtID,OCI_DEFAULT))
{
echo "<font color=red><b>실행 오류:</b></font>SQL 오류:<font color=red>$C_sql</font><br>";
거짓을 반환;
}
/*//영향을 받은 행 수를 반환합니다.
전역 $I_changenum;
$I_changenum = OCINumrows($this -> I_stmtID);*/
//핸들을 해제하고 값을 반환
OCIFreeStatement($this -> I_stmtID);
사실을 반환;
}
//------------------------------------------------ ----------------
//------ ------------------------------------- ----------------------------------
// 함수명 : db_delete($C_sql)
// 기능: 삭제
// 매개변수: C_sql sql문
//반환값: 불리언 값
// 참고: 이 함수는 직관적인 사용을 위한 것이며 기본적으로 db_change()를 호출합니다.
//------------------------------------------------ -----------------------------
함수 db_delete($C_sql)
{
return $this -> db_change($C_sql);
}
//------------------------------------------------ ----------------
//------ ------------------------------------- ----------------------------------
// 함수 이름: db_insert($C_sql,A_bind)
// 기능: 삽입
// 매개변수: C_sql sql문
// A_bind 바인딩
//반환값: 불리언 값
// 참고: 이 함수는 직관적인 사용을 위한 것이며 기본적으로 db_change()를 호출합니다.
//------------------------------------------------ -----------------------------
함수 db_insert($C_sql,$A_bind="")
{
return $this -> db_change($C_sql,$A_bind);
}
//------------------------------------------------ ----------------
//------ ------------------------------------- ----------------------------------
// 함수 이름: db_update($C_sql,A_bind)
// 기능: 업데이트
// 매개변수: C_sql sql문
// A_bind 바인딩
//반환값: 불리언 값
// 참고: 이 함수는 직관적인 사용을 위한 것이며 기본적으로 db_change()를 호출합니다.
//------------------------------------------------ -----------------------------
함수 db_update($C_sql,$A_bind="")
{
return $this -> db_change($C_sql,$A_bind);
}
//------------------------------------------------ ----------------
//------ ------------------------------------- ----------------------------------
// 함수명 : db_commit()
// 기능: 트랜잭션 제출
// 매개변수: 없음
//반환값: 불리언 값
// 비고: 없음
//------------------------------------------------ -----------------------------
함수 db_commit()
{
return (OCICommit($this->I_linkID));
}
//------------------------------------------------ ----------------
//------ ------------------------------------- ----------------------------------
// 함수명 : db_rollback()
// 기능: 트랜잭션 롤백
// 매개변수: 없음
//반환값: 불리언 값
// 비고: 없음
//------------------------------------------------ -----------------------------
함수 db_rollback()
{
return (OCIRolback($this->I_linkID));
}
//------------------------------------------------ -----------------------------
//------------------------------------------------ -----------------------------
// 함수명 : db_logoff()
// 기능: 데이터베이스 연결을 끊습니다.
// 매개변수: 없음
//반환값: 불리언 값
// 비고: 없음
//------------------------------------------------ -----------------------------
함수 db_logoff()
{
return (OCILogoff($this->I_linkID));
}
//------------------------------------------------ -----------------------------
//------------------------------------------------ -----------------------------
}
?>