一個數據庫操作PHP類

wdfd 9年前發布 | 2K 次閱讀 PHP

<?php
/*

*   Author  墨龍 
*   Time    2010年12月2日 15:50:35  
*/  

$db = new mysql($db_host,$db_user,$db_password,$db_table,$db_conn,$pre,$coding);  

class mysql{  

    private    $db_host;  
    private    $db_user;  
    private    $db_password;  
    private    $db_table;  
    private    $db_conn;           //數據庫連接標識;  
    private    $result;         //執行query命令的結果資源標識  
    private    $sql;      //sql執行語句  
    private    $pre;      //數據庫表前綴    
    private    $coding;  //數據庫編碼,GBK,UTF8,gb2312  

    function __construct($db_host,$db_user,$db_password,$db_table,$db_conn,$pre,$coding){  

        $this->db_host     = $db_host;  
        $this->db_user     = $db_user;  
        $this->db_password = $db_password;  
        $this->db_table    = $db_table;  
        $this->db_conn     = $db_conn;  
        $this->pre         = $pre;  
        $this->coding      = $coding;  
        $this->connect();  

    }  

    function connect(){  

        $this->db_conn = @mysql_connect($this->db_host,$this->db_user,$this->db_password) or die($this->show_error("數據庫鏈接錯誤,請檢查數據庫鏈接配置!"));  
        if(!mysql_select_db($this->db_table,$this->db_conn)){  

            echo "沒有找到數據表:".$this->db_table;  
        }  
        mysql_select_db($this->db_table,$this->db_conn);  
        $this->query("SET NAMES $this->coding");  
    }  

    /*執行SQL語句的函數*/  
    function query($sql){  

        if(emptyempty($sql)){  
            $this->show_error("你的sql語句不能為空!");  
        }else{            
            $this->sql = $sql;  
        }  
        $result = mysql_query($this->sql,$this->db_conn);  

        return $this->result = $result;  
    }  

    /*創建添加新的數據庫*/  
    public function create_database($database_name){  
        $database=$database_name;  
        $sqlDatabase = 'create database '.$database;  
        return $this->query($sqlDatabase);  
    }  

    // 根據select查詢結果計算結果集條數   
    public function db_num_rows(){   
         if($this->result==null){  
            if($this->show_error){  
                $this->show_error("sql語句錯誤!");  
            }             
         }else{  
            return  mysql_num_rows($this->result);   
         }  
    }  

    /*查詢服務器所有數據庫*/  
    //將系統數據庫與用戶數據庫分開,更直觀的顯示?  
    public function show_databases(){  
        $this->query("show databases");  
        echo "現有數據庫:".$amount =$this->db_num_rows($rs);  
        echo "<br />";  
        $i=1;  
        while($row = $this->fetch_array($rs)){             
            echo "$i $row[Database]";             
            echo "<br />";  
            $i++;  
        }  
    }  

    //以數組形式返回主機中所有數據庫名   
    public function databases()   
    {   
        $rsPtr=mysql_list_dbs($this->db_conn);   
        $i=0;   
        $cnt=mysql_num_rows($rsPtr);   
        while($i<$cnt)   
        {   
          $rs[]=mysql_db_name($rsPtr,$i);   
          $i++;   
        }   
        return print_r($rs);   
    }  

    /*查詢數據庫下所有的表*/  
    function show_tables($database_name){  
        $this->query("show tables");  
        echo "現有數據庫:".$amount = $this->db_num_rows($rs);  
        echo "<br />";  
        $i=1;  
        while($row = $this->fetch_array($rs)){  
            $columnName="Tables_in_".$database_name;  
            echo "$i $row[$columnName]";  
            echo "<br />";  
            $i++;  
        }  
    }  

    /* 
    mysql_fetch_row()    array  $row[0],$row[1],$row[2] 
    mysql_fetch_array()  array  $row[0] 或 $row[id] 
    mysql_fetch_assoc()  array  用$row->content 字段大小寫敏感 
    mysql_fetch_object() object 用$row[id],$row[content] 字段大小寫敏感 
    */  
    /*取得記錄集,獲取數組-索引和關聯,使用$row['content'] */  
    public function fetch_array()    
    {         
        return @mysql_fetch_array($this->result);   
    }     

    //獲取關聯數組,使用$row['字段名']  
    public function fetch_ass()   
    {   
        return @mysql_fetch_assoc($this->result);   
    }  

    //獲取數字索引數組,使用$row[0],$row[1],$row[2]  
    public function fetch_row()   
    {   
        return @mysql_fetch_row($this->result);   
    }  

    //獲取對象數組,使用$row->content   
    public function fetch_Object()   
    {   
        return @mysql_fetch_object($this->result);   
    }  

    //簡化查詢select  
    public function findall($table){  
        $table = $this->fulltablename($table);  
        $this->query("select * from $table");  
    }  

    public function select($table,$columnName,$condition){  
        $table = $this->fulltablename($table);  
        if(emptyempty($columnName)){  
            $columnName = "*";  
        }  
        $this->query("SELECT $columnName FROM $table $condition");  
    }  

    //簡化的insert  
    function insert($table,$arr){  
        $table = $this->fulltablename($table);  
        $sql = "INSERT INTO $table ";  
        if(!is_array($arr)){  
            $this->show_error("請輸入參數數組!");  
        }else{  
        $k = "";  
        $v = "";  
        foreach($arr as $key => $value){  
            $k .= "`$key`,";  
            $v .= "'".$value."',";  
        }  
        }  
        $sql = $sql." (".substr($k,0,-1).") VALUES (".substr($v,0,-1).")";  
        $this->query($sql);  
    }  
    //簡化的update  
    function update($table,$arr,$where){  
        $table = $this->fulltablename($table);  
        $sql = "UPDATE $table SET ";  
        if(!is_array($arr)){  
            $this->show_error("請輸入參數數組!");  
        }else{  
        foreach($arr as $key => $value){  
            $sql .= " `".$key."` = '".$value."' ,";  
        }  
        }  
        $sql = substr($sql,0,-1)." where ".$where;  
        return $this->query($sql);  
    }  
    //簡化的delete  
    function delete($table,$where = ""){  
        $table = $this->fulltablename($table);  
        if(emptyempty($where)){  
            $this->show_error("條件不能為空!");  
        }else{  
            $where = " where ".$where;  
        }  
        $sql = "DELETE FROM $table ".$where;  
        //echo $sql;  
        return $this->query($sql);  
    }  

    //取得上一步 INSERT 操作產生的 ID  
    public function insert_id(){  
        return mysql_insert_id();  
    }  

    //加上前綴的數據表  
    public function fulltablename($table){  
        return $table = $this->pre.$table;  
    }  

    //查詢字段數量  
    public function num_fields($table){  
        $table = $this->fulltablename($table);     
        $this->query("select * from $table");  
        echo "<br />";  
        echo "字段數:".$total = mysql_num_fields($this->result);  
        echo "<pre>";  
        for ($i=0; $i<$total; $i++){  
            print_r(mysql_fetch_field($this->result,$i) );  
        }  
        echo "</pre>";  
        echo "<br />";  
    }  

    //取得 MySQL 服務器信息  
    public function mysql_server($num=''){  
        switch ($num){  
            case 1 :  
            return mysql_get_server_info(); //MySQL 服務器信息     
            break;  

            case 2 :  
            return mysql_get_host_info();   //取得 MySQL 主機信息  
            break;  

            case 3 :  
            return mysql_get_client_info(); //取得 MySQL 客戶端信息  
            break;  

            case 4 :  
            return mysql_get_proto_info();  //取得 MySQL 協議信息  
            break;  

            default:  
            return mysql_get_client_info(); //默認取得mysql版本信息  
        }  
    }  

    //析構函數,自動關閉數據庫,垃圾回收機制  
    /*public function __destruct() 
    { 
        if(!empty($this->result)){  
            $this->free(); 
        } 
        mysql_close($this->$db_conn); 
    }*/  

    /*獲得客戶端真實的IP地址*/  
    function getip(){   
        if(getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown"))  
        {  
            $ip = getenv("HTTP_CLIENT_IP");   
        }  
        else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown")){  
            $ip = getenv("HTTP_X_FORWARDED_FOR");   
        }  
        else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown"))  
        {  
            $ip = getenv("REMOTE_ADDR");   
        }  
        else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown")){  
        $ip = $_SERVER['REMOTE_ADDR'];   
        }  
        else{  
            $ip = "unknown";          
        }  
        return($ip);  
    }  

    function show_error($str){        
        echo "<script language='Javascript'> alert('".$str."');history.back(-1);</script>";  
    }  

}  
?>  </pre> 


 本文由用戶 wdfd 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!