1. 2007.10.05 Class DB Connection
  2. 2007.08.18 Class를 이용한 DB Connection

Class DB Connection

<?php

class Mysql {
    var $szHost;        // 호스트
    var $szUser;        // 사용자
    var $szPassword;    // 비밀번호
    var $szDataBase;    // 데이터베이스
    var $resConn;       // 연결 핸들
    var $resQuery;      // 쿼리 핸들
    var $szQuery;       // 쿼리문

    # 생성자
    function Mysql($szHost, $szUser, $szPassword) {
        $this->szHost       = $szHost;
        $this->szUser       = $szUser;
        $this->szPassword   = $szPassword;
    }

    # 연결
    function connect() {
        $this->resConn = @mysql_connect($this->szHost, $this->szUser, $this->szPassword) or die ("DB 연결에 실패하였습니다");
    }

    # DB 선택
    function selectDB($szDataBase = NULL) {
        if (isset($szDataBase)) {
            $this->szDataBase = $szDataBase;
        }

        @mysql_select_db($this->szDataBase, $this->resConn) or die ($this->szDataBase . " 데이터베이스가 존재하지 않거나 접근권한이 없습니다.");
    }

    # 쿼리를 실행한다
    function &query($szQuery) {
        $this->szQuery  = $szQuery;
        $this->resQuery = @mysql_query($this->szQuery, $this->resConn);

        if ($this->resQuery) {
            return $this->resQuery;
        } else {
            echo 'DB가 에러가 났습니다.';
            echo "
"; echo mysql_error(); echo "
"; echo $this->szQuery; echo '
'; } } # 쿼리문을 리턴 function getQuery() { return $this->szQuery; } function &select($szTable, $szField = '*', $szWhere = NULL, $szOrderBy = NULL, $nCount = NULL, $nStart = NULL) { $szQuery = "SELECT $szField FROM $szTable"; if (isset($szWhere)) { $szQuery .= " WHERE $szWhere"; } if (isset($szOrderBy)) { $szQuery .= " $szOrderBy"; } if (isset($nStart)) { $szQuery .= " LIMIT $nStart, $nCount"; } else if (isset($nCount)) { $szQuery .= " LIMIT $nCount"; } return $this->query($szQuery); } function &slt($szTable, $szField = '*', $szWhere = NULL, $szOrderBy = NULL, $nCount = NULL, $nStart = NULL) { $szQuery = "SELECT $szField FROM $szTable"; if (isset($szWhere)) { $szQuery .= " WHERE $szWhere"; } if (isset($szOrderBy)) { $szQuery .= " $szOrderBy"; } if (isset($nStart)) { $szQuery .= " LIMIT $nStart, $nCount"; } else if (isset($nCount)) { $szQuery .= " LIMIT $nCount"; } $res = $this->query($szQuery); $rs = $this->fetch($res); return $rs; } // $const = MYSQL_NUM, MYSQL_ASSOC, and MYSQL_BOTH function &fetch($resQuery = NULL, $const = MYSQL_ASSOC) { if (!isset($resQuery)) { $resQuery = $this->resQuery; } return mysql_fetch_array($resQuery, $const); } function freeResult($resQuery = NULL) { if (!isset($resQuery)) { $resQuery = $this->resQuery; } return @mysql_free_result($resQuery); } function numRows($resQuery = NULL) { if (!isset($resQuery)) { $resQuery = $this->resQuery; } return @mysql_num_rows($resQuery); } function getCount($szTable, $szWhere = NULL, $szField = '*', $sOrder= NULL) { $szQuery = "SELECT COUNT($szField) FROM $szTable"; if (isset($szWhere)) { $szQuery .= " WHERE $szWhere"; } if ($sOrder) { $szQuery .= $sOrder; } $res = $this->query($szQuery); $rs = $this->fetch($res, MYSQL_NUM); return $rs[0]; } function getMax($szTable, $szField = '*', $szWhere = NULL) { $szQuery = "SELECT MAX($szField) FROM $szTable"; if (isset($szWhere)) { $szQuery .= " WHERE $szWhere"; } $res = $this->query($szQuery); $rs = $this->fetch($res, MYSQL_NUM); return $rs[0]; } function getMin($szTable, $szField = '*', $szWhere = NULL) { $szQuery = "SELECT MIN($szField) FROM $szTable"; if (isset($szWhere)) { $szQuery .= " WHERE $szWhere"; } $res = $this->query($szQuery); $rs = $this->fetch($res, MYSQL_NUM); return $rs[0]; } function &insert($szTable, $arrFieldValue, $bOpt = FALSE) { // 데이터 입력 $nTmp = 0; if ($bOpt) { $nSize = sizeof($arrFieldValue) - 1; foreach($arrFieldValue as $arrTmp) { $nTmp1=0; foreach($arrTmp as $szField => $szValue) { if ($nTmp==0) $szFields .= ($nTmp1==0)? $szField : ", $szField"; $szValues .= ($nTmp1 == 0)? "('$szValue'" : ", '$szValue'"; $nTmp1++; } $szValues .= ($nTmp == $nSize) ? ")" : "),"; $nTmp++; } } else { foreach($arrFieldValue as $szField => $szValue) { $szFields .= ($nTmp == 0) ? $szField : ", $szField"; $szValues .= ($nTmp == 0) ? "('$szValue'" : ", '$szValue'"; $nTmp++; } $szValues.=")"; } $szQuery = sprintf("INSERT INTO %s (%s) VALUES %s", $szTable, $szFields, $szValues); return $this->query($szQuery); } function &update($szTable, $arrFieldValue, $szWhere = NULL) { // 데이터 수정(배열을 이용) $nTmp=0; foreach ($arrFieldValue as $szField => $szValue) { $szFields .= ($nTmp==0)? "$szField='$szValue'" : ", $szField='$szValue'"; $nTmp++; } if ($szWhere) { $szWhere = "WHERE $szWhere"; } $szQuery = sprintf("UPDATE %s SET %s %s ", $szTable, $szFields, $szWhere); return $this->query($szQuery); } function &delete($szTable, $szWhere = NULL) { $szQuery = "DELETE FROM $szTable"; if (isset($szWhere)) { $szQuery .= " WHERE $szWhere"; } return $this->query($szQuery); } function dataSeek($n, $resQuery = NULL) { if (!isset($resQuery)) { $resQuery = $this->resQuery; } return mysql_data_seek($resQuery, $n); } function getLastInsertID() { $res = $this->query("SELECT LAST_INSERT_ID()"); $rs = $this->fetch($res, MYSQL_NUM); return $rs[0]; } function close() { if ($this->resConn) { @mysql_close($this->resConn); } } } ?>

'WebDevelop > PHP' 카테고리의 다른 글

XMLParser  (0) 2007.10.05
PHP에서 자바 클래스 호출  (0) 2007.10.05
XML 문서파싱 - SAX 방식 , DOM 방식  (0) 2007.10.05

Class를 이용한 DB Connection

PHP에서 Class 를 써보자!
이 Class는 DB 연동부분을 클래스로만든것입니다.
다들아시겠지만 Mysql_fetch_array, mysql_fetch_Object 등등 DB 연동 함수들을 이용한것들이지요

CLASS dbconn {
    var $conn;
    function dbconn($host, $user, $pass, $dbname) {
        $this->conn = mysql_connect($host, $user, $pass) or die('connect Error');
        $status = mysql_select_db($dbname, $this->conn);
        if (!$status) {
            alert_msg('connect Error');
        }
    }

    function query($qry) {
        $result = mysql_query($qry, $this->conn);
        if (!$result) {
            alert_msg($qry);
        }
        return $result;
    }

    function num_rows($qry) {
        $result = $this->query($qry);
        $num = mysql_num_rows($result);
        return $num;
    }

    function fetch_array($qry) {
        $num_row = $this->num_rows($qry);
        if ($num_row == 0) {
            return 0;
        } else {
            $result = $this->query($qry);
            $i = 0;
            while ($rows = mysql_fetch_array($result, MYSQL_ASSOC)) {
                $arydata[$i] = $rows;
                $i++;
            }
            return $arydata;
        }
    }

    function fetch_rows($qry) {
        $num_row = $this->num_rows($qry);
        if ($num_row == 0) {
            return 0;
        } else {
            $result = $this->query($qry);
            $i = 0;
            while ($rows = mysql_fetch_row($result)) {
                $rowdata[$i] = $rows;
                $i++;
            }
            return $rowdata;
        }
    }

    function sql_result($qry,$int) {
        $result = $this->query($qry);
        $value = @mysql_result($result, 0, $int);
        return $value;
    }

    function fetch_row($qry) {
        $num_row = $this->num_rows($qry);
        if ($num_row == 0) {
            return 0;
        } else {
            $result = $this->query($qry);
            $rows = mysql_fetch_row($result);
            return $rows;
        }
    }

    function fetch_1array($qry) {
        $num_row = $this->num_rows($qry);
        if ($num_row == 0) {
            return 0;
        } else {
            $result = $this->query($qry);
            $rows = mysql_fetch_array($result);
            return $rows;
        }
    }
}

맨위에 dbconn ---> 클래스 이름입니다.
일단 클래스 안의 내용 보다도 클래스를 어떻게 사용하는지 보면 클래스를 사용하기위해서는 적당한 변수를 먼저 정해서...
$conn 이렇게 정했습니다 .

그럼 클래스를 사용해보지요.

$conn = New dbconn(DB호스트, DB사용자 계정, DB패스워드, 사용 DB명);

이렇게 필요한 인자들을 넣은후 호출합니다.
이때 $conn 변수는 클래스의 함수에 접근할 수 있는 객체 변수로 정의됩니다.

$conn 이라는 클래스 객체 변수를 이용.. 함수를 호출해봅니다.
클래스 내에 맨위의 첫번째 함수 이름을 보면 클래스명과 같은 것을 볼 수 있습니다.
이 함수는 생성자 함수이며... 클래스의 객체가 생성될때마다 자동으로 호출되어 집니다.

$conn = New dbconn(DB호스트, DB사용자 계정, DB패스워드, 사용 DB명);

이렇게 객체를 생성할때 이미 저 생성자 함수는 호출된것이지요...
그러므로 생성자 함수에 DB Connect 부분을 코딩하였습니다... 클래스를 호출했다면 이미 디비 연결된것이지요

그럼 생성된 객체로 클래스를 이용해봅시다.
클래스 내의 함수를 보면 fetch_array 함수가 있을것입니다
일단 클래스 내의 함수를 호출해 사용할려면...

$data = $conn->fetch_array($sql);

형식은 이렇게 됩니다.
$conn 객체변수로 클래스의 fetch_array 함수를 호출하여 $data 라는 변수에 넣어 줍니다
그럼 함수 fetch_array 를 보면 결과를 배열 반환합니다

$data 라는변수에는 쿼리를 날려 결과로 얻은 레코드들이 들어있지요..
그럼 만약 게시판 코딩 상에서 이 레코드들을 뿌린다면

for ($i = 0; $i < count($data); $i++) {
    echo $data[$i]['컬럼명1'];
    echo $data[$i]['컬럼명2'];
    echo $data[$i]['컬럼명3'];
                    .
                    .
                    .
                    .
}

이렇게 하면 ~~~ 쭉~~

'WebDevelop > JavaScript' 카테고리의 다른 글

inputbox 동적생성  (0) 2007.09.11
JavaScript 기본  (0) 2007.09.11
크로스 브라우징때 편할것 같은 DOM  (0) 2007.08.23
Return top