很不錯的一款PHP Mysql數據庫操作類

最新很不錯的一款PHP Mysql數據庫操作類

以下是三零網爲大家整理的最新很不錯的一款PHP Mysql數據庫操作類的文章,希望大家能夠喜歡!


<?php

/*
*           無論做什麼都要無私,只有大家好纔是真的好,如果使用有任何問題請聯繫告知本人,交流就是相互促進的大舞臺。
*/ 

class mysql{
   
    private $db_host;  //數據庫主機
    private $db_user;  //數據庫用戶名
    private $db_pwd;   //數據庫用戶名密碼
    private $db_database;    //數據庫名
    private $conn;           //數據庫連接標識;
    private $result;         //執行query命令的結果資源標識
    private $sql;      //sql執行語句
    private $row;     //返回的條目數
    private $coding;  //數據庫編碼,GBK,UTF8,gb2312
    private $bulletin = true;    //是否開啓錯誤記錄
    private $show_error = true;     //測試階段,顯示所有錯誤,具有安全隱患,默認關閉
    private $is_error = false;   //發現錯誤是否立即終止,默認true,建議不啓用,因爲當有問題時用戶什麼也看不到是很苦惱的
     

    /*構造函數*/
    public function __construct($db_host,$db_user,$db_pwd,$db_database,$conn,$coding){
         $this->db_host=$db_host;
         $this->db_user=$db_user;
         $this->db_pwd = $db_pwd;
         $this->db_database=$db_database;
         $this->conn=$conn;
         $this->coding=$coding;
         $this->connect();
    }

    /*數據庫連接*/                
    public function connect()
    {
        if($this->conn=="pconn"){
            //永久鏈接
            $this->conn=mysql_pconnect($this->db_host,$this->db_user,$this->db_pwd);
        }else{
            //即使鏈接
            $this->conn=mysql_connect($this->db_host,$this->db_user,$this->db_pwd);
        }

        if(!mysql_select_db($this->db_database,$this->conn)){
            if($this->show_error){
                $this->show_error("數據庫不可用:",$this->db_database);
            }
        }
        mysql_query("SET NAMES $this->coding");
    }
   
    /*數據庫執行語句,可執行查詢添加修改刪除等任何sql語句*/
    public function query($sql)
    {       
        if($sql == ""){
        $this->show_error("sql語句錯誤:","sql查詢語句爲空");}
        $this->sql = $sql;
       
        $result = mysql_query($this->sql,$this->conn);
   
        if(!$result){
            //調試中使用,sql語句出錯時會自動打印出來
            if($this->show_error){
                $this->show_error("錯誤sql語句:",$this->sql);
            }
        }else{
            $this->result = $result;
        }
        return $this->result;      
    }
   
   
    /*創建添加新的數據庫*/
    public function create_database($database_name){
        $database=$database_name;
        $sqlDatabase = 'create database '.$database;
        $this->query($sqlDatabase);
    }
   
    /*查詢服務器所有數據庫*/
    //將系統數據庫與用戶數據庫分開,更直觀的顯示?
    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->conn);
        $i=0;
        $cnt=mysql_num_rows($rsPtr);
        while($i<$cnt)
        {
          $rs[]=mysql_db_name($rsPtr,$i);
          $i++;
        }
        return $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] 字段大小寫敏感
    */
   
    /*取得結果數據*/
    public function mysql_result_li() 
    {
        return mysql_result($str);
    }
    
    /*取得記錄集,獲取數組-索引和關聯,使用$row['content'] */
    public function fetch_array() 
    {       
        return mysql_fetch_array($this->result);
    }
   
   
    //獲取關聯數組,使用$row['字段名']
    public function fetch_assoc()
    {
        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)
    {
        $this->query("SELECT * FROM $table");
    }
   
   
    //簡化查詢select
    public function select($table,$columnName,$condition)
    {
        if($columnName==""){
            $columnName="*";
        }

        $this->query("SELECT $columnName FROM $table $condition");

    }
   
    function insert($table, $values) {
        $table = $this->fulltablename($table);
        $sql = "INSERT INTO {$table}";
        $keysql = '';
        $valuesql = '';
        foreach($values as $key => $value) {
            $keysql .= "`$key`,";
            $valuesql .= "'".ak_addslashes($value)."',";
        }
        $sql = $sql.'('.substr($keysql, 0, -1).')VALUES('.substr($valuesql, 0, -1).')';
        return $this->query($sql);
    }

    function update($table, $values, $where) {
        $table = $this->fulltablename($table);
        $sql = "UPDATE {$table} SET ";
        $keysql = '';
        $valuesql = '';
        foreach($values as $k => $v) {
            if(substr($v, 0, 1) == '+' && a_is_int(substr($v, 1))) {
                $sql .= "`$k`={$k}{$v},";
            } else {
                $sql .= "`$k`='".ak_addslashes($v)."',";
            }
        }
        $sql = substr($sql, 0, -1);
        $sql .= " WHERE {$where}";
        return $this->query($sql);
    }

    function delete($table, $where = '') {
        $table = $this->fulltablename($table);
        $sql = "DELETE FROM {$table}";
        if($where != '') $sql .= " WHERE {$where}";
        return $this->query($sql);
    }
       
   
    /*取得上一步 INSERT 操作產生的 ID*/
    public function insert_id(){
        return mysql_insert_id();
    }
 

   
    //指向確定的一條數據記錄
    public function db_data_seek($id){
        if($id>0){
            $id=$id-1;
        }
        if(!@mysql_data_seek($this->result,$id)){
            $this->show_error("sql語句有誤:", "指定的數據爲空");       
        }
        return $this->result;
    }
   
   
    // 根據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);
         }
    }
   
    // 根據insert,update,delete執行結果取得影響行數
    public function db_affected_rows(){
         return mysql_affected_rows();
    }
   
   
    //釋放結果集
    public function free(){
        @mysql_free_result($this->result);
    }
   
    //數據庫選擇
    public function select_db($db_database){
        return mysql_select_db($db_database);
    }
   
    //查詢字段數量
    public function num_fields($table_name){
        //return mysql_num_fields($this->result);
        $this->query("select * from $table_name");
        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->conn);
    }//function __destruct();

    function show_error($str,$str1){
       
        echo $str."<br>".$str1;
   
    }
   
    /*獲得客戶端真實的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);
    }
   
   
}
?>

轉載來自:http://www.q3060.com/list3/list117/281.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章