미니디비 0.2.2p4
주로 인포믹스용 미니디비의 문제로 인해 업그레이드합니다. 이번에 수정한 내용들은 전부 내부적으로 처리되는 부분에 관한 것으로 사용자 인터페이스에는 전혀 변경이 없습니다.
- PHP3를 지원하지 않습니다. class_exists 함수를 사용하기 때문에 4.0b4 이상에서만 정상적으로 동작합니다.
- 디비 연결에 실패할 경우 에러메시지를 출력한 후 종료하도록 수정합니다. 이를 위해 클래스의 생성자를 수정합니다. 아래는 MySQL의 경우입니다.
[code php;gutter:false]
function baseMysql($host="", $user="", $pass="", $base="", $connect="") {
if (is_array($host))
extract($host);
if (!$this->LID=$GLOBALS["_hBASE"]["mysql"]->connect($host, $user, $pass, $base, $connect))
die("Not a valid Link resource in ".__FILE__." on line ".__LINE__); // <-- 새로 추가된 에러출력 부분
} [/code]
if (is_array($host))
extract($host);
if (!$this->LID=$GLOBALS["_hBASE"]["mysql"]->connect($host, $user, $pass, $base, $connect))
die("Not a valid Link resource in ".__FILE__." on line ".__LINE__); // <-- 새로 추가된 에러출력 부분
} [/code]
미니디비 0.2.2p3
- 스크립트 완료시 메모리 자원 해제 기능을 PHP 자체에서 처리하도록 하였습니다. 따라서 register_shutdown_function2 함수 및 소멸자를 모두 삭제하였습니다.
- PHP 4.2.0 부터 포스트그레스 SQL의 함수명이 변경되었습니다. 따라서 포스트그레스용 미니디비가 PHP 버전에 따라 분리되었습니다.
-class.pgsql.php(>= PHP 4.2.0)
-class.pgsql-4.1.0.php(<= PHP 4.1.0)
미니디비 0.2.2p2
주로 인포믹스용 미니디비의 문제로 인해 업그레이드합니다. 이번에 수정한 내용들은 전부 내부적으로 처리되는 부분에 관한 것으로 사용자 인터페이스에는 전혀 변경이 없습니다.
- 인포믹스용 미니디비 수정 내용
-next_record()의 내용을 수정하였습니다.
김기수 님이 지적하신 내용(보기싫은 에러 발생)에 따라 if (is_array($record=ifx_fetch_row($this->RID)))을 if (is_array($record=@ifx_fetch_row($this->RID))) 으로 수정합니다.
-ifx_num_rows()함수에 문제가 있어 수정합니다.
이 문제 역시 김기수 님이 지적하신 내용으로 자세한 내용은 Q&A 게시판에서 "[참고]미니디비 0.2.2p1 수정요망"라는 제목을 참조바랍니다.
이 문제는 PHP에서 제공하는 ifx_num_rows() 함수가 정상적으로 동작하지 않는다는 것이었습니다. 말하자면 버그가 있는 함수라고 생각하시면 됩니다. 이 문제를 해결하기 위해 prvNumRows()를 아래와 같이 수정하였습니다. - 모든 미니디비에서 공통으로 수정된 내용
- 소멸자(destructor)이 내용을 개선하였습니다.
- init() 함수명을 connect() 로 변경하였습니다.
- prvUnsetNumberIndex() 함수 처리에 있어 상황에 따라 약간의 문제가 발생하고 있어 수정하였습니다.
[code php;gutter:false]
function prvNumRows($query) {
if (eregi("^[[:space:]]*SELECT[[:space:]]", $query)) {
$from_pos = strpos(strtoupper($query),"FROM");
$q = "SELECT count(*) ". substr($query, $from_pos);
$rid = @ifx_query($q, $this->LID);
$record = @ifx_fetch_row($rid);
@ifx_free_result($rid);
return $record['(count)'];
} else
return @ifx_affected_rows($this->RID);
} [/code]
if (eregi("^[[:space:]]*SELECT[[:space:]]", $query)) {
$from_pos = strpos(strtoupper($query),"FROM");
$q = "SELECT count(*) ". substr($query, $from_pos);
$rid = @ifx_query($q, $this->LID);
$record = @ifx_fetch_row($rid);
@ifx_free_result($rid);
return $record['(count)'];
} else
return @ifx_affected_rows($this->RID);
} [/code]
미니디비 0.2.2p1
- 데이터베이스용 세셔너핸들러와 충돌되어 수정하였습니다.
따라서 데이터베이스용(공유메모리,파일,DBM/DBA,쿠키용은 관계없음) 세셔너핸들러를 사용하시는 분이 미니디비 0.2.2p1을 사용하기 위해서는 세셔너 0.2.5p1 과 데이터베이스용 세셔너핸들러 0.0.2p3를 함께 업그레이드 하여 주십시요.
-미니디비 0.2.2p1
-세셔너 0.2.5p1
-데이터베이스용 세셔너핸들러 0.0.2p3
동일한 웹문서에서 미니디비를 사용하는 복수의 라이브러리를 사용할 때는 아래와 같이 미니디비 파일을 가장 먼저 인클루드 시켜주세요.
[code php;gutter:false]
require("./minidb/class.mysql.php"); // 미니디비(MySQL용) 0.2.2p1
require("./applicationer/class.applbase.php"); // 애플리케이셔너(디비용) 0.0.2
if ("3." == substr(phpversion(), 0, 2)) {
include("./sessioner/lib.sessioner.php"); // 세셔너 0.2.5p1
}
require("./sessioner/handler.sessbase.php"); // 세셔너핸들러(디비용) 0.0.2p3
require("./unittable/class.unittable.php"); // 유닛테이블 0.x.x [/code]
require("./applicationer/class.applbase.php"); // 애플리케이셔너(디비용) 0.0.2
if ("3." == substr(phpversion(), 0, 2)) {
include("./sessioner/lib.sessioner.php"); // 세셔너 0.2.5p1
}
require("./sessioner/handler.sessbase.php"); // 세셔너핸들러(디비용) 0.0.2p3
require("./unittable/class.unittable.php"); // 유닛테이블 0.x.x [/code]
미니디비 0.2.2
- 클래스 파일명이 class.디비명.inc에서 class.디비명.php로 변경되었습니다.
- 클래스명이 baseDbsql에서 MiniDB로 변경되었습니다. (그러나 각 디비별로 정의된 클래스명은 먼저 그대로임)
- 데이터베이스를 영구 접속할 것인지 임시 접속할 것인지를 선택할 수 있습니다.
- MySQL 뿐만 아니라 모든 디비에서 REPLACE 쿼리문을 수행할 수 있습니다.
- 스크립트 완료시 모든 불필요한 메모리 자원을 시스템에 자동 반환합니다.
단, 스크립트가 중간에 비정상적으로 종료되었을 때의 문제는 남아 있습니다. 따라서 이런 문제로 발생하는 메모리 자원 반납은 시스템 차원에서 처리가 요망됩니다. - 동일한 데이터베이스 내에 존재하는 복수의 디비를 다룰 때의 문제점을 수정하였습니다.
- 인포믹스 데이트베이스용을 추가하였습니다.
미니디비 0.2.1
- 오라클용 미니디비의 버그 수정
- DELETE, UPDATE, INSERT와 같은 쿼리문을 가지고 query() 함수를 실행할 때 affected rows를 반환하도록 개선
미니디비 0.2.0
- 복수의 객체를 생성할 때 데이터베이스가 중복되어 연결되는 문제 해결
- 서로 다른 데이터베이스를 동시에 작업할 수 있도록 개선
- 정보은익(information hiding) 강화의 일환으로 멤버변수 접근 불허, 메소드만으로 접근
- 메소드 인터페이스 변경
미니디비 0.1.2
- PostgreSQL용 미니디비의 버그 수정
미니디비 0.1.1(최초 공개 버전)
- MySQL, Oracle, SyBASE, MSQL, PostgreSQL, MSSQL용 DB Layer로 개발
'phpsource > 데이터베이스' 카테고리의 다른 글
{미니디비}4.사용방법 (0) | 2000.11.21 |
---|---|
{미니디비}3.사용자 인터페이스 (0) | 2000.11.21 |
{미니디비}2.MiniDB 작성 (0) | 2000.11.21 |
{미니디비}1.DB Layer의 필요성 (0) | 2000.11.21 |