查看完整版本: PHP访问数据库的一个class

redor 2006-4-26 17:17

PHP访问数据库的一个class

[code]
<?php
/********************************************************************************************
*
*      SounOS WebSite Content Management
*      This Project Supported By SounOS Development Group <devel@list.sounos.org>
*
*
* This Class is Used for management of database access
* License              GNU General Public License (GPL)
* Author               redor <redor@126.com>
* Copyright            By SounOS <http://cms.sounos.org>
* Last Modified        Thu Mar 23 2006
*
*********************************************************************************************/

class cDatabase{
        var $db_host                = '';
        var $db_name                = '';
        var $db_username        = '';
        var $db_password        = '';
        var $db_type                = '';
        var $pconnect                = '';
        var $error                = '';
        var $debug                = '';
        var $link_id                = '';
       
        /**
         *
         * Class Construct
         * INIT some member viarable of class
         *
         * @param string , $db_host database hostname OR hostip OR sock
         * @param string , $db_username username for accessing database
         * @param string , $db_password password for accessing database
         * @param string , $db_type database type ,mysql pgsql msql etc
         * @param string , $db_name default database name for connection
         * @param string , $pconnect boolen for mysql_pconnect
         * @param string , $debug boolen for show debug msg
         *
         **/
        function cDatabase($db_host,$db_username,$db_password,$db_type,
                           $db_name='',$pconnect='',$debug=''){
                $this->db_host                = $db_host;
                $this->db_name                = $db_name;
                $this->db_username        = $db_username;
                $this->db_password        = $db_password;
                $this->db_type                = $db_type;
                $this->pconnect                = $pconnect;
                $this->debug                = $debug;
                return $this->connect();
               
        }
       
        /**
         *
         * db connecting
         *
         *
         **/       
        function connect(){
                switch($this->db_type){
                        case 'mysql' :
                        if($this->pconnect){
                        $this->link_id=@mysql_pconnect($this->db_host,
                                        $this->db_username,$this->db_password);
                        }else{
                        $this->link_id=@mysql_connect($this->db_host,
                                        $this->db_username,$this->db_password);
                        }
                        if(!is_resource($this->link_id)){
                                $this->error();
                                return '';       
                        }
                        return ($this->db_name)?@mysql_select_db($this->db_name,$this->link_id):'';
                   break;

                }
        }
       
        /**
         *
         * get db connection error
         *
         *
         **/
        function error(){
                switch($this->db_type){
                        case 'mysql' :       
                        if(is_resource($this->link_id)){
                                $errno  = mysql_errno($this->link_id);
                                $error  = mysql_error($this->link_id);
                        }else{
                                $errno  = mysql_errno();
                                $errno  = mysql_error();
                        }
                        if($this->debug){
                                echo "<pre>$errno::$error</pre><br>\n";
                                return 0;
                        }
                        $this->error        .= "<pre>$errno::$error</pre><br>\n";
                        return 0;
                break;
                }
                return 0;
        }
       
        /**
         *
         * Excute SQL Query on default db connection
         * @param string , $SQL SQL for querying
         *
         **/
        function query($SQL){
                switch($this->db_type){
                        case 'mysql' :
                        $result = @mysql_query($SQL,$this->link_id);
                        if(!$result){
                                return $this->error();
                        }
                        return $result;
                break;

                }
        }
       
        /**
         *
         * get ALL data as Array
         * @param resource , $result result of SQL query
         * @param INSTANT  , $type data fetch type , MYSQL_ASSOC default
         *
         **/
        function fetch_all_array(&$result,$type=MYSQL_ASSOC){
                switch($this->db_type){
                        case 'mysql' :
                        $data        = Array();
                        if(!$result || !@mysql_num_rows($result)){
                                return $this->error();
                        }
                        while($row        = mysql_fetch_array($result,$type)){
                                $data[]        = $row;
                        }
                        return $data;
                break;
                }
        }
       
        /**
         *
         * get rows number of result
         * @param resource , $result result of SQL query
         *
         **/
        function num_rows(&$result){
                switch($this->db_type){
                        case 'mysql' :
                        return @mysql_num_rows($result);
                break;
                }
        }
       
        /**
         *
         * //fetch data as Array constant : MYSQL_ASSOC,MYSQL_NUM , MYSQL_BOTH
         * @param resource , $result result of SQL query
         * @param INSTANT  , $type data fetch type , MYSQL_ASSOC default
         *
         **/
        function fetch_array(&$result,$type=MYSQL_ASSOC){
                switch($this->db_type){
                        case 'mysql' :
                        return @mysql_fetch_array($result,$type);
                break;       
                }
        }
       
        /**
         *
         * fetch data Array as ASSOC
         * @param resource , $result result of SQL query
         *
         **/       
        function fetch_assoc(&$result){
                switch($this->db_type){
                        case 'mysql' :
                        return @mysql_fetch_assoc($result);
                break;
                }
        }

        /**
         *
         * fetch data Array as NUM
         * @param resource , $result result of SQL query
         *
         **/
        function fetch_row(&$result){
                switch($this->db_type){
                        case 'mysql' :
                        return @mysql_fetch_row($result);
                break;
                }
        }
       
        /**
         *
         * create new database
         * @param string , $db_name database name
         *
         **/
        function create_db($db_name){
                switch($this->db_type){
                        case 'mysql' :
                        $SQL         = " CREATE DATABASE $db_name ;";
                        return $this->query($SQL);
                break;

                }       
        }
       
        /**
         *
         * drop database
         * @param string , $db_name database name
         *
         **/
        function drop_db($db_name){
                switch($this->db_type){
                        case 'mysql' :
                        $SQL        = "DROP DATABASE $db_name ;";
                        return $this->query($SQL);
                break;
                }
        }
       
        /**
         *
         * list all db
         *
         **/
        function list_dbs(){
                switch($this->db_type){
                        case 'mysql' :
                        $SQL    = "SHOW  DATABASES;";
                        $result        = $this->query($SQL);
                        return $this->fetch_all_array($result);
                break;

                }
        }
       
        /**
         *
         * list tables of $db_name
         * @param string , $db_name database name ,if null use default database name
         *
         **/
        function list_tables($db_name=''){
                switch($this->db_type){
                        case 'mysql' :
                        $db_name        = ($db_name)?$db_name:$this->db_name;
                        $SQL            = " SHOW  TABLES FROM $db_name;";
                        $result         = $this->query($SQL);
                        $lists                = Array();
                        while($row = mysql_fetch_row($result)){
                                $lists[] = $row[0];
                        }
                        return $lists;
                break;
                }       
        }
       
        /**
         *
         * data seek
         * @param resource , $result result of SQL Query
         * @param int           , $offset point of data
         *
         **/
        function data_seek(&$result,$offset){
                switch($this->db_type){
                        case 'mysql' :
                        return @mysql_data_seek($result,$offset);
                break;
                }
        }
       
        /**
         *
         * fetch length
         * @param resource , $result result of SQL Query
         *
         **/
        function fetch_object(&$result){
                switch($this->db_type){
                        case 'mysql' :
                        return @mysql_fetch_object($result);
                break;
                }
        }

        /**
         *
         * get autoincrement id
         * @param resource , $link_id DB connection ID , if null used default connection ID
         *
         **/
        function insert_id(&$link_id=''){
                 switch($this->db_type){
                        case 'mysql' :
                        if(@mysql_insert_id($link_id)){
                                return mysql_insert_id($link_id);
                        }else{
                                return mysql_insert_id($this->link_id);
                               
                        }
                break;
                }
        }

        /**
         *
         *
         *
         **/
        function affected_rows(&$result){
                switch($this->db_type){
                        case 'mysql' :
                break;
                       
                }
        }

        /**
         *
         * get server system stat
         * @param resource , $link_id DB connection ID , if null used default connection ID
         *
         **/
        function status(&$link_id=''){
                switch($this->db_type){
                        case 'mysql' :
                        $link_id        = ($link_id)?$link_id:$this->link_id;
                        $SQL                 = "SHOW STATUS;";
                        $result         = @mysql_query($SQL,$link_id);
                        $stat                = Array();
                        while (mysql_num_rows($result)
                                && list($key,$val)=mysql_fetch_array($result) ){
                                $stat[$key]        = $val;
                        }
                        return $stat;
                break;
                }

        }

        /**
         *
         * get server info
         * @param resource , $link_id DB connection ID , if null used default connection ID
         *
         **/
        function server_info(&$link_id=''){
                switch($this->db_type){
                        case 'mysql' :
                        $link_id        = ($link_id)?$link_id:$this->link_id;
                        $server_info        = @mysql_get_server_info($link_id);
                        return ($server_info)?$server_info:$this->error($link_id);
                break;
                }
        }

        /**
         *
         * get server info
         * @param resource , $link_id DB connection ID , if null used default connection ID
         *
         **/
        function processlist(&$link_id=''){
                switch($this->db_type){
                        case 'mysql' :
                        $link_id        = ($link_id)?$link_id:$this->link_id;
                        $SQL        = "SHOW PROCESSLIST;";
                        $result         = @mysql_query($SQL,$link_id);
                        $processlit        = Array();
                        while(@mysql_num_rows($result)
                             && $row = mysql_fetch_array($result,MYSQL_ASSOC)){
                                $processlist[]        = $row;
                        }       
                        return $processlist;
                break;
                }
        }
}
?>

[/code]

可以直接下载附件

OnlyOne 2006-4-26 19:39

支持原创!
希望能在CHINACODE看到更多的原创文章!
页: [1]
查看完整版本: PHP访问数据库的一个class