«   2021/10   »
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            
Tags
more
Archives
Today
240
Total
1,919,938
관리 메뉴

올해는 머신러닝이다.

PHP DBConnection 클래스 본문

php/Tip&Tech

PHP DBConnection 클래스

리엑티브한 행복한 수지아빠 2011. 7. 28. 12:26
출처 : http://web3.kr/40034737395
주석이 없다.. 나만 쓸려고 만들어 놓은거라서...
관련되서 공부하고자 하는 분들이 있으면 참고하시라...

#DBConn.Class.php
<?
    
/***************************************************************
    프로그램명    : DBConn Class
    작성자        : 윤영식 (2006-02-17 오후 5:07)
    설명            : DataBase Connection Class (Oracle, MySQL)
    ***************************************************************/

    
Class DBConn 
{

        const 
MYSQL 1
;
        const 
ORACLE 2
;

        private 
$connection
;

        private 
$dbType
;
        private 
$dbHost
;
        private 
$dbPort
;
        private 
$dbSID
;
        private 
$dbName
;
        private 
$dbUser
;
        private 
$dbPassword
;
        private 
$dbCharset
;


        function 
__construct($URI
) {
    
            
$this->parseURI($URI
);

            try {
                
$this    ->Connection
();

            } catch (
Exception $e
) {
                echo 
$e->getMessage
();

                
$this->__destruct
();
            }
        }

        function 
__destruct
() {

            if (
$this->dbType==MYSQL
) {
                @
mysql_close($this->connection
);
            } else if (
$this->dbType==ORACLE
) {
                @
oci_close($this->connection
);
            }
        }

        private function 
parseURI($URI
) {

            
$URI str_replace("#","_sp_",$URI
);
            
//$mysql_uri = "mysql://localhost:3306/?dbname=meris&username=meris&password=meris&charset=euckr";
            //$oracle_uri = "oracle://localhost:1521/?sid=ora10g&username=meris&password=meris&charset=";

            
$exp parse_url ($URI
);

            if (
strtolower($exp[scheme])=="mysql"
) {
                
$this->dbType=MYSQL
;
            } else if (
strtolower($exp[scheme])=="oracle"
) {
                
$this->dbType=ORACLE
;
            }

            
$this->dbHost $exp[host
];
            
$this->dbPort $exp[port
];

            
parse_str($exp[query
]);

            
$this->dbSID str_replace("_sp_","#",$dbsid
);
            
$this->dbName str_replace("_sp_","#",$dbname
);
            
$this->dbUser str_replace("_sp_","#",$username
);
            
$this->dbPassword str_replace("_sp_","#",$password
);
            
$this->dbCharset str_replace("_sp_","#",$charset
);
        }

        function 
freeStatement($stmt
) {
            if (
$this->dbType==MYSQL
) {
                @
mysql_free_result($stmt
);
            } else if (
$this->dbType==ORACLE
) {
                @
oci_free_statement($stmt
);
            }
        }

        private function 
Connection
() {
            if (
$this->dbType==MYSQL
) {
                if (!
$this->connection=@mysql_connect($this->dbHost,$this->dbUser,$this->dbPassword
)) {
                    throw new 
Exception(mysql_error
());
                }
                
                if(!
mysql_select_db($this->dbName,$this->connection
)){
                    throw new 
exception(mysql_error
());
                }  
                
                if (
$this->dbCharset
) {
                    @
mysql_query("set session character_set_connection=".$this->dbCharset.";"
);
                    @
mysql_query("set session character_set_results=".$this->dbCharset.";"
);
                    @
mysql_query("set session character_set_client=".$this->dbCharset.";"
);

                }

            } else if (
$this->dbType==ORACLE
) {
                if (!
$this->connection = @oci_connect($this->dbUser,$this->dbPassword,$this->dbSID,$this->dbCharset
)) {
                    
$error oci_error
();
                    throw new 
Exception($error[message
]);
                }

            } else {
                throw new 
Exception("No such DB Type".$this->dbType
);
            }
        }

        function 
getConnection
() {
            return 
$this->connection
;
        }

        function 
destroyConnection
() {
            if (
$this->dbType==MYSQL
) {
                @
mysql_close($this->connection
);
            } else if (
$this->dbType==ORACLE
) {
                @
oci_close($this->connection
);
            }
        }

        function 
execute($sql,$flag=OCI_COMMIT_ON_SUCCESS
) {
            if (
$this->dbType==MYSQL
) {
                if (!
$stmt = @mysql_query($sql,$this->connection
)) {
                    echo 
mysql_error
();
                    return 
false
;
                } else {
                    return 
$stmt
;
                }
            } else if (
$this->dbType==ORACLE
) {
                if (!
$stmt = @oci_parse($this->connection,$sql
)) {
                    
$error oci_error($this->connection
);
                    echo 
$error[message
];
                    return 
false
;
                }

                if (!@
oci_execute($stmt,$flag
)) {
                    
$error oci_error($stmt
);
                    echo 
$error[message
];
                    return 
false
;
                } else {
                    return 
$stmt
;
                }
            }
        }

        function 
fetchObject(&$obj,$stmt
) {
            if (
$this->dbType==MYSQL
) {
                if (
$obj=@mysql_fetch_object($stmt
)) {
                    return 
true
;
                }
            } else if (
$this->dbType==ORACLE
) {

                if (
$row = @oci_fetch_assoc($stmt
)) {
                    
$rows 
= Array();
                    while(list(
$key,$val)=each($row
)) {
                        
$rows[strtolower($key)] = $val
;
                    }
                    
$obj = (object)$rows
;
                    return 
true
;
                }
            }
            return 
false
;
        }

        function 
fetchAssoc(&$obj,$stmt
) {
            if (
$this->dbType==MYSQL
) {
                if (
$obj = @mysql_fetch_assoc($stmt
)) {
                    return 
true
;
                }
            } else if (
$this->dbType==ORACLE
) {
                if (
$row = @oci_fetch_assoc($stmt
)) {
                    
$obj 
= Array();
                    while(list(
$key,$val)=each($row
)) {
                        
$obj[strtolower($key)] = $val
;
                    }
                    return 
true
;
                }
            }

            return 
false
;
        }

        function 
fetchRow(&$obj,$stmt
) {
            if (
$this->dbType==MYSQL
) {
                if (
$obj = @mysql_fetch_row($stmt
)) {
                    return 
true
;
                }
            } else if (
$this->dbType==ORACLE
) {
                if (
$obj = @oci_fetch_row($stmt
)) {
                    return 
true
;
                }
            }

            return 
false
;
        }

        function 
fetchArray(&$obj,$stmt
) {
            if (
$this->dbType==MYSQL
) {
                if (
$obj = @mysql_fetch_array($stmt
)) {
                    return 
true
;
                }
            } else if (
$this->dbType==ORACLE
) {

                if (
$row = @oci_fetch_array($stmt
)) {
                    
$obj 
= Array();
                    while(list(
$key,$val)=each($row
)) {
                        
$obj[strtolower($key)] = $val
;
                    }
                    return 
true
;
                }
            }

            return 
false
;
        }

        function 
commit
() {
            if (
$this->dbType==ORACLE
) {
                return 
oci_commit($this->connection
);
            } else {
                return 
true
;
            }
        }

        function 
rollback
() {
            if (
$this->dbType==ORACLE
) {
                return 
oci_rollback($this->connection
);
            } else {
                return 
true
;
            }
        }

        function 
getAffectedRows($obj=""
) {
            if (
$this->dbType==MYSQL
) {
                if (
$obj==""
) {
                    return 
mysql_affected_rows
();
                } else {
                    return 
mysql_affected_rows($obj
);
                }
            }

            return 
false
;
        }
        
        function 
getNumRows($stmt
) {
            if (
$this->dbType==MYSQL
) {
                return 
mysql_num_rows($stmt
);
            }
            return 
false
;
        }

        
## 계속 추가 예정
    
}
?>


사용방법
Oracle DB 사용시 #oracle.php
<?php
    
/***************************************************************
    프로그램명    : Oracle 예제
    작성자        : 윤영식 (2006-10-18 오후 5:44)
    ***************************************************************/
    
$uri "oracle://localhost:1521/?sid=ora10g&username=meris&password=meris&charset="
;

    
// Class 호출
    
$conn = new DBConn($uri
);

    
$sql "SELECT name FROM ttable"
;

    
// 쿼리 실행
    
$stmt $conn->execute($sql
);

    
// $obj 오브젝트로 Fetch
    
$conn->fetchObject(&$obj,$stmt
);

    
// $obj->컬럼명 하면 데이터 나옴
    
$name $obj->name
;

    
$obj=null
;

    
// Statment Free
    
$conn->freeStatement($stmt
);
?>


MySQL DB 사용시 #mysql.php
<?php
    
/***************************************************************
    프로그램명    : MySQL 예제
    작성자        : 윤영식 (2006-10-18 오후 5:47)
    ***************************************************************/
    
$uri "mysql://localhost:3306/?dbname=meris&username=meris&password=meris&charset=euckr"
;

    
// Class 호출
    
$conn = new DBConn($uri
);

    
$sql "SELECT name FROM ttable"
;

    
// 쿼리 실행
    
$stmt $conn->execute($sql
);

    
// $obj 오브젝트로 Fetch
    
$conn->fetchObject(&$obj,$stmt
);

    
// $obj->컬럼명 하면 데이터 나옴
    
$name $obj->name
;

    
$obj=null
;

    
// Statment Free
    
$conn->freeStatement($stmt
);
?>


눈치 빠른 분들은 벌써 눈치 쳈겠지만...
$uri 값만 바까줌으로써.. MySQL 이든 Oracle 이든 모두 사용가능 하다.
Sybase 및 기타 다른 DB도 해보고 싶지만 설치 되어 있는 환경이 없어서 테스트 불가.

'php > Tip&Tech' 카테고리의 다른 글

php 함수목록  (0) 2013.06.02
php db connection class 범용  (0) 2011.09.27
.php 확장자를 .html로 쓰기위해  (1) 2011.08.12
php 접속하면 파일 다운로드 바로 가기  (0) 2011.08.01
PHP DBConnection 클래스  (0) 2011.07.28
PHP 페이징 기법  (0) 2011.07.27
0 Comments
댓글쓰기 폼