PHP 디비 커넥션 : Database Connection
반응형
Connection.php
<?php /** * @class Connection ver 1.1 * @brief database Connection * * registered date 20100502 * programmed by Seok Kyun. Choi. 최석균 * http://syaku.tistory.com */ class Connection { var $is_new = false; // 새로운 디비 링크 var $host = 'localhost'; // 호스트 var $user = 'root'; // 계정 var $pass = 'x'; // 암호 var $source = 'x'; // 데이터베이스 var $pagenum=10; var $pagecount=9; var $conn,$result; var $query = null; var $page = 1; var $page_row = 10; var $page_link = 10; var $total_count = 0; var $total_page = 0; var $start_page = 0; var $now_page = 0; var $end_page = 0; var $start_idx = 0; var $virtual_idx =0; // 에러처리 var $error = false; var $message = ""; function Connection() { $this->conn = $this->mysql(); } function mysql($is_new = false) { if(!$this->conn || $is_new){ $this->conn = @mysql_connect($this->host, $this->user, $this->pass) or $this->error(); @mysql_select_db($this->source, $this->conn) or $this->error(); } return $this->conn; } function close(){ if($this->conn) { @mysql_close($this->conn) or $this->error(); } } function error(){ $this->error = true; $this->message = mysql_error() . "\n<br />" . $this->query . "\n<br />"; } function result() { $r = @mysql_query($this->query,$this->conn); if (!$r) { $this->error(); } return $r; } function fetch($obj,$mode = 'array') { switch($mode){ case 'array': return mysql_fetch_array($obj); break; case 'object': return mysql_fetch_object($obj); break; case 'row': return mysql_fetch_row($obj); break; case 'rows': return mysql_affected_rows($obj); break; case 'num_rows': return mysql_num_rows($obj); break; case 'result': return mysql_free_result($obj); break; } } // 현재 페이지번호 function setPage($page) { if($page == '' || $page == 0) { $this->page = 1; } else { $this->page = $page; } } // 페이지 인덱스 function index($total_count) { // 총 레코드수 $this->total_count = $total_count; // 총 페이지수 $this->total_page = (($this->total_count - 1) / $this->page_row) + 1; // 시작 페이지 번호 $this->start_page = (($this->page - 1) / $this->page_link) * $this->page_link + 1; // 현재 페이지 번호 $this->now_page = ($this->start_page / $this->page_link) + 1; // 마지막 페이지 번호 $this->end_page = $this->start_page + ($this->page_link - 1); // 시작 페이지 인덱스 번호 $this->start_idx = ($this->page - 1) * $this->page_row; // 페이지 가상번호 $this->virtual_idx = $this->total_count - ($this->page_row * ($this->page - 1)); } } ?>
디비 연결 예제
<?php include_once "./common/classes/Connection.php"; $conn = new Connection(); $page = $_GET['page']; $conn->setPage($page); // page index $conn->query = "select count(*) from test"; $rs = $conn->result(); $total_count = $rs[0]; $conn->index($total_count); // query string $conn->query = "select * from test limit " . $conn->start_idx . ",10" // mysql execute $result = $conn->result(); // error if ($conn->error) { echo $conn->message; } $cnt = 0; while($rs = $conn->fetch($result)) { $num = $conn->virtual_idx - $cnt; $name = $rs['name']; echo $name; } $conn->close(); ?>
반응형
'개발노트 > PHP' 카테고리의 다른 글
PHP 문법 정리 : 자주 사용하는 PHP (0) | 2014.05.23 |
---|---|
PHP 배열 조합 함수 : jQuery extend for PHP (0) | 2014.04.11 |
PHP json2xml 사용법 및 XE 로그인연동 : json2xml , XpressEngine (0) | 2010.10.12 |
PHP 로또 비지니스로직 : lotto 1 to 45 (0) | 2010.05.11 |