php도  클래스를  만들어  쓸수  있다.  다들  알겠지만
보통  마니  쓰이는  함수들을  클래스로  만들어  필요할때  마다  불러쓰면  편리하다.
디비관련된거나  페이징  관련  함수들을  마니들  클래스로  만들어  쓴다.
디비  관련  클래스를  만들어보자.
php스쿨에  나와  있는것들을  참조했는데..
허접함을  미리  고백한다.  나에게  필요한  기능만을  만들었기  때문이고..
아직  검증이  안됬기  때문이다..
부디  참조만  하기  바란다.
dbclass.inc
class  MySqlDb{
    var  $Conn;
    var  $Host;
    var  $UserName;
    var  $Password;
    var  $DatabaseName;
    var  $Res;
    var  $Row;
    //생성자
    function  MySqlDb($Host,$UserName,$Password,$DatabaseName){
        $this->Host  =  $Host;
        $this->UserName  =  $UserName;
        $this->Password  =  $Password;
        $this->DatabaseName  =  $DatabaseName;
    }
    //디비  연결
    function  Connect(){
        $this->Conn  =  mysql_connect($this->Host,$this->UserName,$this->Password);
        if(!$this->Conn){
            $this->halt(“Host를  연결할  수가  없습니다.”);
        }else{
if( !mysql_select_db($this->DatabaseName,$this->Conn) ){
                $this->halt(“DB를  연결할  수가  없습니다.”);
            }
        }
    }
    //쿼리문을  이용하여  resultset  값을  만든다.
    function  Query($qry){
        $this->Res  =  mysql_query($qry,$this->Conn);
        if(!$this->Res){
            $this->halt(“쿼리문제  =>  $qry”);
        }
return $this->Res;
}
    //resultset  값을  이용하여  실제  데이터  값을  배열로  리턴한다.
    function  Row($res){
        $this->Row  =  mysql_fetch_row($res);
        return  $this->Row;
    }
    //resultset을  만들면서  생성된  메모리를  해제한다.
    //@는  에러가  나도  넘긴다.
    function  FreeResult(){
        @mysql_free_result($this->Res);
}
    //디비연결을  해제한다.
    function  Disconnect(){
@mysql_close($this->Conn);
        //메모리에서  변수들을  해제한다.
        unset($this->Conn);
        unset($this->Host);
        unset($this->UserName);
        unset($this->Password);
        unset($this->DatabaseName);
        unset($this->Res);
        unset($this->Row);                  
}
    //  에러메시지  출력함수
    function  halt($massage){
        $this  ->  Errno  =  mysql_errno();
        $this  ->  Error  =  mysql_error();
echo “Oops~!! Database Error : $massage
”  ;
        echo  “$this->Errno  ($this->Error)
“;
        die  (‘process  halted’);
    }
    //filed에  따른  최대값을  구한다.
    function  MaxNum($fld,$tbn){
        $qry  =  “select  max($fld)  from  $tbn”;
        $res=$this->Query($qry);
        $this->Row($res);
        if($this->Row[0]){
            $maxnum  =  $this->Row[0]+1;
        }else{
            $maxnum  =  1;
        }
$this->FreeResult();
        return  $maxnum;
    }
    //조건에  따른  카운트를  한다.
    function  Count($fld,$tbn,$where){
        $qry  =  “select  count($fld)  from  $tbn  $where  “;
        $res=$this->Query($qry);
        $this->Row($res);
$this->FreeResult();
return $this->Row[0];
}
}
?>
다음은 쓰는 방법을 설명한다.
//디비관련  클래스가  있는  파일을  인클루드  한다.
include  "dbclass.inc";
//클래스를  생성한다.
$mysql  =  new  MySqlDb("localhost","계정아이디","패스워드","디비명");
//디비를  연결한다.
$mysql->Connect();
//Count함수를  써서  row수를  구한다.
$rows=$mysql->Count(“num”,$tbn,”where  num  =  $num”);
if($rows>0){
    $query  =  “select  num,targetdate,enddate,writer,subject,content,texthtml,filename,regdate,hits,ipAddr  from  $tbn  where  num=$num”;
    //쿼리문으로  resultset  을  만들고
    $res  =  $mysql->Query($query);
    //배열값을  리턴한다.
    $row  =  $mysql->Row($res);
    //각각의결과값들을  가져온다.
    $num  =  $row[0];
    $targetdate  =  $row[1];
    $enddate  =  $row[2];
    $writer  =  $row[3];
    $subject  =  $row[4];
    $content  =  $row[5];
    $texthtml  =  $row[6];
    $filename  =  $row[7];
    $regdate  =  $row[8];
    $hits  =  $row[9];
    $ipAddr  =  $row[10];
    //메모리에서  해제한다.
    $mysql->FreeResult();
}
//디비연결을  해제한다.
$mysql->Disconnect();
?> 
 
							
Comments
Powered by Facebook Comments