程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php實現的mysql數據庫操作類

php實現的mysql數據庫操作類

編輯:關於PHP編程

     這篇文章主要介紹了php實現的mysql數據庫操作類,本文最後有使用方法,需要的朋友可以參考下

     代碼如下: <?php /* 數據庫操作類 */ class Mysql{  private $LocalHost = 'localhost';  private $LoaclUser = 'root';  private $LocalPass = '123456';  private $LocalBase = 'jiangxibaiyi';  private $LocalCode = 'UTF8';  private $PreFix;  private $Conn;  private $Start     = 0;  private $Error     = false; //數據庫連接狀態, false表示未連接或連接不正常  public  $Err       = true;  //Sql執行結果    private $Table;  private $Field     = '*';  private $Where     = '';  private $Order     = '';    private $PageSize  = 0; //分頁顯示->每頁多少條,0為不分頁顯示  private $PageCount = 1; //分頁顯示->總共有多少條  private $PageNum   = 1; //分頁顯示->總共有多少頁  private $PageNo    = 1; //分頁顯示->當前第幾頁  private $PageKey   = 'page'; //分頁url參數鍵  private $PageStart = 0; //分頁顯示->當前從第幾條開始返回      private $Select;  private $Rest;    private $Result    = false;//結果集    public $FormArray = array();    public $Instr_ID  = 0;  private $j =  0;      public function Parameter($Loca, $Root, $Pass, $Base, $Code, $PreFix = ''){   $this->LoaclUser = $Root;   $this->LocalBase = $Base;   $this->LocalCode = $Code;   $this->LocalHost = $Loca;   $this->LocalPass = $Pass;   $this->PreFix    = $PreFix;   return $this;  }  private function Connection( $Sql ){   !function_exists(mysqli_connect) ? die('查詢失敗,無法加載mysqli擴展') : null;   $this->Conn = @new mysqli( $this->LocalHost, $this->LoaclUser, $this->LocalPass, $this->LocalBase);   $this->Error = mysqli_connect_errno() == 0 ? true : false;   !$this->Error ? die('數據庫連接錯誤,請檢查數據庫連接參數') : null;   $this->Conn->query('SET NAMES ' . $this->LocalCode);   $this->Rest = $this->Conn->query($Sql);   $this->Err  = mysqli_error($this->Conn);   $this->Instr_ID = mysqli_insert_id($this->Conn);   $this->Rest->free_result;   $this->Conn->close;   $this -> FormArray = '';   return $this;  }    public function null(){   $this->PageSize  = 0;   //$this->PageCount = 1;   $this->PageStart = 1;   $this->Field     = ' * ';      $this->Select    = '';   unset($this->Table, $this->Where,$this->Order, $this->Result);  }    public function Table( $TableName ) {//數據表    $this -> null();    $this->Table = '`' . $this->PreFix . $TableName . '`';    return $this;  }    public function Field( $Array = '*' ) {//數據字段    !empty( $this->Field ) ? $this->Field = '' : null;    $Array = explode(',', $Array);    foreach ( $Array as $field ) {    $this->Field .= !$this->Start ? '`' . $field . '`' :  ', `' . $field . '`';    $this->Start++;    }    $this->Start = 0;    return $this;  }    public function Where( $Where ) {//條件        $this->Where = ' where ' .$Where;     return $this;   }    public function Order( $Order ) {//排序    $this->Order = ' order by ' . $Order;    return $this;  }    public function pk( $key ) {//分頁url參數鍵    $this->PageKey = $key;    return $this;  }    public function Page( $PageSize ) {//分頁    $this->PageSize = $PageSize;    $this->PageNo   = $this->get( $this->PageKey );    $this->PageNo   = empty( $this->PageNo ) || !isset( $this->PageNo ) || !is_numeric( $this->PageNo ) || $this->PageNo < 1 ? 1 : $this->PageNo;    return $this;  }    public function post( $Key, $Filter = true ){   return $Filter ? strip_tags($_POST[$Key]) : $_POST[$Key];  }    public function get( $Key, $Filter = true ){   return $Filter ? strip_tags($_GET[$Key]) : $_GET[$Key];  }    public function Sel(){   $this->Select = 'Select ' . $this->Field . ' from ' . $this->Table . $this->Where . $this->Order;   $this->Connection( $this->Select );   if ( $this->Rest->num_rows ) {    while ( $Rs = $this->Rest->fetch_assoc() ) {      $this->Result[] = $Rs;     }   }     $DataBase = $this->Result;     return empty($DataBase) ? false : $DataBase;  }    public function querys( $Sql = '', $Type = 'not', $biao = false ) {   $this->Select = $Sql;   $this->Connection( $this->Select );   if ( $this->Rest->num_rows ) {      if ( !$biao ) {    while ( $Rs = $this->Rest->fetch_array() ) {      $this->Result[] = !preg_match('/^d+$/i', $Type) ?  $Rs : $Rs[ $Type ];     }   } else {    while ( $Rs = $this->Rest->fetch_assoc() ) {      $this->Result[] = $Rs;     }   }   }     $DataBase = $this->Result;     return empty($DataBase) ? false : $DataBase;    }    public function executes( $Sql = '' ){   $this->Connection( $Sql  );   return $this->Rest;  }      public function exists( $T = '', $F = '', $W = ''){   if ( empty( $F ) ) { return 0; }   $cmd = empty( $W ) ? 'Select sum(' . $F . ') as `baiyinum` from `' . $this->PreFix . $T .'`' : 'Select sum(' . $F . ') as `baiyinum` from `' . $this->PreFix . $T .'` Where ' . $W;         $this->Connection( $cmd );   unset( $T, $F, $W, $cmd );   $Rel =  $this->Rest->fetch_array();   return round( $Rel['baiyinum'], 2 );  }      public function ExistsTo( $Bili = 10000, $T = '', $F = '', $W = ''){   if ( empty( $F ) ) { return 0; }   $cmd = empty( $W ) ? 'Select sum(' . $F . ') as `baiyinum` from `' . $this->PreFix . $T .'`' : 'Select sum(' . $F . ') as `baiyinum` from `' . $this->PreFix . $T .'` Where ' . $W;         $this->Connection( $cmd );   unset( $T, $F, $W, $cmd );   $Rel =  $this->Rest->fetch_array();   return round( $Rel['baiyinum'] * $Bili );  }      public function Select( $Type = true, $ListNum = 1 ){ //返回記錄(數組形式, 返回條數)    $this->Select = 'Select ' . $this->Field . ' from ' . $this->Table . $this->Where . $this->Order;    if ( is_numeric( $ListNum ) ) {    if ( $this->PageSize > 0 ) {    $this->Connection( $this->Select );//執行查詢    $this->PageCount =  $this->Rest->num_rows;//取得記錄總數    $this->PageNum   =  ceil($this->PageCount / $this->PageSize); //總共有多少頁    $this->PageNo    = $this->PageNo > $this->PageNum ? $this->PageNum : $this->PageNo;    $this->PageStart = ( $this->PageNo - 1 ) * $this->PageSize;   //當前從第幾條開始返回    $this->Select   .= ' limit ' . $this->PageStart . ', ' .$this->PageSize; //重新構造sql語句   } else {    $this->Select   .= ' limit ' . $ListNum; //重新構造sql語句   }    } else {    $this->Select   .= ' limit 1'; //重新構造sql語句    }    //echo $this->Select;    $this->Connection( $this->Select );//再次執行查詢    if ( $this->Rest->num_rows ) {//如果記錄存在   if ( $Type ) {     while ( $Rs = $this->Rest->fetch_array() ) {      $this->Result[] = $Rs;     }   }else{     while ( $Rs = $this->Rest->fetch_assoc() ) {      $this->Result[] = $Rs;     }   }    }    if ( ( $ListNum == 1 or !is_numeric( $ListNum ) ) && !$this->PageSize) { $this->Result = $this->Result[0]; }    $DataBase = $this->Result;    return empty($DataBase) ? false : $DataBase;  }      public function Num() { //返回記錄總數      $this->Select = 'Select ' . $this->Field . ' from ' . $this->Table . $this->Where . $this->Order;   $this->Connection( $this->Select );//執行查詢   return $this->Rest->num_rows;//取得記錄總數    }      public function PageNav($NumNav = false ) {  //分頁   $Action = $this -> get('action');   !empty( $Action ) or $Action =  'index';   $Module = $this -> get('module');   !empty( $Module ) or $Module = 'index';   $NavUrl   = '/' . $Module . '/' . $Action . '/' . $this -> PageKey .'/';   $NaIndex  = '/' . $Module . '/' . $Action;   $PageHtml = "n<div class="pagenav">";   $PageHtml .= '<span>' . $this->PageCount . '條記錄        ' . $this->PageNo . '/' . $this->PageNum . '頁</span>            ';   $this->PageNo <= 1 or $PageHtml .= "<a href="" . $NaIndex . "">首頁</a>n<a href="" .  $NavUrl . ($this->PageNo - 1) . "">上一頁</a>n";  if ( $NumNav ) { $PageHtml .= $this->NumPage($NavUrl); }  $this->PageNo >= $this->PageNum or $PageHtml .= "<a href="" . $NavUrl. ($this->PageNo + 1) .  "">下一頁</a>n<a href="" . $NavUrl . $this->PageNum . "">尾頁</a>n";  $PageHtml .= "</div>n";  return  $PageHtml;     }      private function NumPage( $Can = '' ) { //數字分頁     $NumHtml = '';     $First   = 1;     $Last    = $this->PageNum;     if ( $this->PageNum > 5 ) {      if ( $this->PageNo < $this->PageNum ) {      $First = $this->PageNo - 2;      $Last  = $this->PageNo + 2;      }else{      $First = $this->PageNo - 4;      $Last  = $this->PageNum;      }     }     if ( $First < 1 ) { $First   = 1; $Last = $First + 4;}     if ( $Last  > $this->PageNum ) { $First   = $this->PageNum - 4; $Last = $this->PageNum;}     for( $i = $First; $i <= $Last; $i++) {      $NumHtml .= $this->PageNo != $i ? "nt" . '<a href="' . $Can . $i . '">' . $i . '</a>' . "nt" : "nt" .'<a class="hover" disabled="disabled">' . $i . '</a>' . "nt";     }     unset($Can, $First, $i, $Last);     return $NumHtml;    }      public function UserPage($NumNav = false, $PageName = 'index', $Mulu = 'user' ) {  //會員中心分頁      $NavUrl   = '/' . $Mulu . '/' . $PageName . '/' . $this->PageKey . '/';   $PageHtml = "n<div class="pagenav">";   $PageHtml .= '<span>' . $this->PageCount . '條記錄        ' . $this->PageNo . '/' . $this->PageNum . '頁</span>            ';   $this->PageNo <= 1 or $PageHtml .= "<a href="" . $NavUrl . "1">首頁</a>n<a href="" .  $NavUrl . ($this->PageNo - 1) . "">上一頁</a>n";  if ( $NumNav ) { $PageHtml .= $this->NumPage($NavUrl); }  $this->PageNo >= $this->PageNum or $PageHtml .= "<a href="" . $NavUrl. ($this->PageNo + 1) .  "">下一頁</a>n<a href="" . $NavUrl . $this->PageNum . "">尾頁</a>n";  $PageHtml .= "</div><div class="clear"></div>n";  return  $PageHtml;     }          //表單處理開始    //判斷表單時候提交  public function FormIs( $Keys = 'mm' ) {   return $_POST[ $Keys ] == 1 ? true : false;  }    //post方式獲取數據  public function _post( $Keys = '', $TiHuan = '') {   $Values = strip_tags( $_POST[ $Keys ] );   $this->FormArray[$Keys] = empty( $Values ) ? $TiHuan : $Values;         return  empty( $Values ) ? $TiHuan : $Values;  }    //get方法獲取數據  public function _get( $Keys = '', $TiHuan = '') {   $Values = strip_tags( $_GET[ $Keys ] );         return  empty( $Values ) ? $TiHuan : $Values;  }    //判斷是否為數字並且不小於0  public function IsNum( $Num = 0, $Mesg = '參數必須為數字' ) {   if ( is_numeric( $Num ) && !empty( $Num ) && $Num >= 0 ) {    return $Num;   }else{    die( $Mesg );   }  }    //判斷是否為數字並且不小於0返回True/False  public function NumBer( $Num = 0) {    return  is_numeric( $Num ) && !empty( $Num ) && $Num >= 0 ? true : false;  }    //檢測相關數據似乎存在  public function IsData($Types = true, $memg = '數據已經存在' ){   $this->Connection('select ' . $this->Field . ' from ' . $this->Table . $this->Where);   if ( $Types ){    $this->Rest->num_rows > 0 ? die( $memg ) : null;   } else {    return $this->Rest->num_rows;   }  }      //寫入數據庫記錄  public function into( $Mesg = '' ){   !is_array( $this->FormArray ) ? die( $Mesg ) : null;   $Sql = 'insert into ' . $this->Table . ' (`';   $I   = 0;   foreach ( $this->FormArray as $Key => $Val ){    $Duan .= !$I ? $Key . '`' : ', `' . $Key . '`';    if ( is_numeric( $Val ) ){     $Vals .= !$I ? $Val : ', ' . $Val;    }else{     $Vals .= !$I ? ''' . $Val . ''' : ', '' . $Val . ''';    }    $I++;   }   $Sql .= $Duan . ') values (' . $Vals . ')';     //@file_put_contents('1.sql', $Sql, FILE_APPEND);     $this->Connection( $Sql );   return !empty( $this->Err ) ? false : true;  }      //數組形式寫入數據    public function MsgBox( $Table = '', $Filed = array() ) {     $this -> Table($Table);     foreach( $Filed as $Key => $Val ) {     $this -> FormArray[ $Key ] = $Val;      }    return $this ->  Into('未取得數據');    }      //修改數據庫記錄    public function Edit( $Array = array() ) {     if ( empty( $Array ) ) { $Array = $this -> FormArray; }     if ( !is_array( $Array ) || empty( $Array ) ) {      return false;     } else {        $Sql = 'update ' . $this -> Table . ' set ';     $I   = 0;     $Sub = '';     $Huan = array('-' => '[jian]', '+' => '[jia]', '*' => '[cheng]', '/' => '[chu]');     $Zhan = array('[jian]' => '-', '[jia]' => '+', '[cheng]' => '*', '[chu]' => '/');       foreach ( $Array as $Files => $Val ) {      $Val  = !is_numeric( $Val ) && !preg_match('/`w+`s*(+|-|*|/)/i', $Val) ? ''' . $Val . ''' : $Val;      foreach ( $Huan as $key => $val ){       $Val = str_replace($key, $val, $Val);      }      $duan = !$I ? '`' . $Files . '` = ' :  ', `' . $Files . '` = ';      $Sub .= $duan . $Val;      $I++;     }     $Sql .= $Sub . $this -> Where;     foreach ( $Zhan as $Fan => $Hui ) {      $Sql = str_replace($Fan, $Hui, $Sql);     }       //echo $Sql; die;       $this -> Connection( $Sql );     unset( $Array, $duan, $Fan, $Files, $Huan, $Hui, $I, $key, $Sql, $Sub, $Val, $Zhan, $val );     return !empty( $this -> Err ) ? false : true;    }    }      //刪除數據庫記錄    public function del(){     $Sql = 'delete from ' . $this->Table . $this->Where;     $this->Connection( $Sql );     unset($Sql);     return !empty( $this->Err ) ? false : true;    }      //表單處理結束      //頁面跳轉    public function Msg( $Text = '操作成功' ) {     echo '<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />';     echo '<script type="text/javascript">   <!--     alert("' . $Text . '");  document.location="' . $_SERVER['HTTP_REFERER'] . '";   //-->    </script>';  exit;    }      #取得系統當前時間    public function Times(){     return str_replace('-', '[jian]', date('Y-m-d H:i:s'));    }      #取得用戶IP地址  public 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);   }           //最後關閉數據庫連接    public function Close(){     !is_object( $this -> Conn ) or mysqli_close( $this -> Conn );    }   }       使用方法: 聲明數據庫對象 $Conn = new Mysql; 加載數據庫參數 $Conn->Parameter(數據庫服務器, 數據庫用戶名, 數據庫密碼, 數據庫名稱, 數據庫編碼, 數據庫表前綴[可為空]);   上面的代碼就已經加載這個類文件進來了,並且初始化了一些數據庫連接參數!   下面介紹幾個基本是方法函數: 1、 $Conn -> Table(); 選擇數據表,參數是數據表名稱 2、$Conn -> Field(); 選擇的字段名稱,多個用逗號隔開,如不調用這個方法,則返回全部 3、$Conn -> Where(); Sql Where子語句,根據條件篩選 4、$Conn -> Order(); Sql 排序 5、$Conn -> Page(int); 參數是一個正整數數字,如調用這個方法,記錄將分頁顯示 6、$Conn -> Select(布爾值); 執行查詢,返回查詢結果,如果有,則是一個二維數組,如果無,則返回假,參數可省略,如省略,默認為真,返回的數組包含數字元素 7、$Conn -> Del(); 刪除記錄 8、 $Conn -> Edit(array()); 修改記錄,參數是一個一維數組,數組鍵是字段名稱,數組值是字段值 9、$Conn -> Into(array()); 添加記錄,參數是一個一維數組,數組鍵是字段名稱,數組值是字段值。   以上方法可連續調用,比如:    代碼如下: $Rult = $Conn -> Table('user') -> Select(); //查詢返回user表的所有記錄 $Rult = $Conn -> Table('user') -> Page(20) -> Select();//查詢返回user表的所有記錄,並分頁顯示,每頁20條;  
    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved