메뉴 건너뛰기

프로그램언어

조회 수 30504 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
주석이 없다.. 나만 쓸려고 만들어 놓은거라서...
관련되서 공부하고자 하는 분들이 있으면 참고하시라...

#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도 해보고 싶지만 설치 되어 있는 환경이 없어서 테스트 불가

List of Articles
번호 제목 날짜 조회 수
160 문자열에서 태그를 제거 (strip_tags) 2016.12.23 17522
159 text파일에 한줄씩 내용추가하기 2017.03.06 17537
158 PHP 도메인 이름이나 웹문서 주소 알아내기 2017.03.06 17589
157 정규식 2017.04.13 17599
156 그누보드, 여분필드 사용팁 2017.03.06 17606
155 http://홈주소/?mode=xxx 하는방법 2017.03.07 17642
154 PHP 날짜 함수 2017.04.13 17673
153 어떤 스마트폰으로 접속했는지 알아내는 소스 , (안드로이드 아이폰 ) 2014.03.26 17716
152 PHP로 엑셀 자료 MySQL에 넣기 2017.03.06 17875
151 네이버 자동 띄어쓰기를 이용하기 2017.03.27 17940
150 gd_info 사용 가능한 GD 라이브러리에 대한 정보를 배열로 반환 2016.12.23 17989
149 is_array — 변수가 배열인지 확인 2016.12.23 18048
148 문자열의 태그를 그대로 출력 (htmlspecialchars) 2016.12.23 18069
147 fileatime 파일에 최종적으로 접근한 시간을 반환 2016.12.23 18117
146 PHP EXCEL export시 시트 이름 지정하여 여러 시트에 데이터 쓰기 2017.03.06 18266
145 PHP 속도 테스트 20 가지 2017.03.06 18306
144 이스케이프 함수 (htmlentities) 2016.12.23 18375
143 정규표현식 검사 도구 (ereg, eregi) 2016.12.23 18395
142 PHP에서 데이터를 엑셀(Excel)로 저장 2017.02.19 18431
141 몫과 나머지 구하기 2017.03.07 18471
Board Pagination Prev 1 ... 5 6 7 8 9 10 11 12 13 14 ... 17 Next
/ 17

하단 정보를 입력할 수 있습니다

© k2s0o1d4e0s2i1g5n. All Rights Reserved