mysqli 클래스를 이용한 DB 연동 클래스 입니다.
기본 컨섭은
1. 클래스에서 DB 연동
2. 리스트를 가져와야 하는 클래스에서 배열로 데이타 저장후
배열로 해당 내용을 메인 프로그램에서 받음.
3. DB 연결 종료
4. 필요항목에 해당 데이타를 뿌려줍니다.
(왜 이런짓을 하냐면요.. DB 연결시간을 조금이라도 줄일려고 하는^^:::)
먼저 메인 프로그램입니다.
<?php
include_once("./library/common/class.MySqlDbCon.php");
include_once("./library/common/class.BoardQuery.php");
$dbArray = array(); // 데이타 값을 받을 배열 선언
$dbclass = new MySqliDbCon("select"); // DB 연결 클래스 생성
$dbcon = $dbclass->connectDb(); // DB 연결
$boardclass = new BoardQuery($dbcon); // DB 연결을 리스트를 가져올 클래스에 넘겨주면서 생성
$dbArray = $boardclass->queryTest(); // 리스트를 배열로 받아옴
$boardclass->boardClose(); // 연결 종료
$dbclass->closeDb(); // 연결 종료
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr"/>
</head>
<body>
게시판이나 기타 내용 부분이 보이는 <br>
이미 DB 접속은 끊었음.
<?
for($i = 0; $i <10; $i++) {
echo $dbArray['ID'][$i];
echo $dbArray['CODE'][$i];
echo $dbArray['SIDO'][$i];
echo $dbArray['GUGUN'][$i];
echo $dbArray['DONG'][$i];
echo "<br>";
}
?>
끝
</body>
</html>
DB 연동 클래스 파일
<?php
class MySqliDbCon {
private $dbServer; // DB의 호스트
private $dbUser; // DB 접속 user
private $dbPassword; // DB 접속 패스워드
private $dbName; // DB 명
private $dbLink; // 접속 DB 인자
private $disCon; // DB 접속 해재 확인
// Select 실행 DB 연결
public function conDbSelect() {
$this->dbServer = "localhost";
$this->dbUser = "사용자 이름";
$this->dbPassword = "사용자 비밀번호";
$this->dbName = "DB 이름";
}
// Insert, Update, Delete 실행 DB 연결.
public function conDbChange() {
$this->dbServer = "localhost";
$this->dbUser = "사용자 이름";
$this->dbPassword = "사용자 비밀번호";
$this->dbName = "DB 이름";
}
// DB 연결 함수
public function connectDb() {
$this->dbLink = new mysqli($this->dbServer,$this->dbUser,$this->dbPassword,$this->dbName);
if (mysqli_connect_errno()) {
printf("데이타베이스 접속실패 : %s\n", mysqli_connect_error());
exit();
} else {
return $this->dbLink;
}
}
// DB 종결 함수
public function closeDb() {
if (!mysqli_connect_errno()) {
$this->dbLink->close();
$this->disCon = "Y";
}
}
// 생성자 : 리플리케이션 사용시 DB server 를 select 와 change(i,u,d) 로 구분하여 접속
public function __construct($dmlType) {
if ($dmlType == "select") {
$this->conDbSelect();
echo "조회용 DB"; //테스트용 구분
} else if ($dmlType == "change") {
$this->conDbChange();
echo "조작용 DB"; //테스트용 구분
}
}
// 소멸자
public function __destruct(){
if($this->disCon != "Y") {
$this->closeDb();
}
}
}
?>
리스트를 뽑아오는 클래스 파일입니다.
<?php
class BoardQuery {
private $dbLink; // 접속 DB 인자
private $stmt;
private $dbArray = array();
private $disCon; // 해재 확인
public function queryTest() {
if($this->stmt = $this->dbLink->prepare("select ID,CODE,SIDO,GUGUN,DONG from softpage_zip limit 10")) {
$this->stmt->execute();
$this->stmt->bind_result($col1, $col2, $col3,$col4,$col5);
$i = 0;
while ($this->stmt->fetch()) {
$dbArray['ID'][$i] = $col1;
$dbArray['CODE'][$i] = $col2;
$dbArray['SIDO'][$i] = $col3;
$dbArray['GUGUN'][$i] = $col4;
$dbArray['DONG'][$i] = $col5;
$i ++;
}
return $dbArray;
}
}
public function __construct($dbCon) {
$this->dbLink = $dbCon;
}
// 소멸자
public function __destruct(){
$this->boardClose();
}
public function boardClose(){
if($this->disCon != "Y") {
$this->stmt->close();
$this->disCon = "Y";
}
}
}
?>
상기와 같습니다.
아래의 에러부분들은 다 처리하고 올립니다.. 소멸자를 안 쓰자니 허전해서 구지 쓰면 좀더 걸리는 부분이 많네요.. 이 부분에 대해서도 고수님들의 조언이 필요합니다..
다들 보시고 지적해 주십시요.. 이미 다른분들의 좋은 자료가 있으면..혼동을 막기 위해서 삭제 하겠습니다.
출처 : PHPSCHOOL
[출처] mysqli 클래스를 이용한 DB 연동 클래스 입니다.|작성자 나무실