php实现mysql数据库操作类分享 |
本文标签: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 ? "\n\t" . <a href=" . $Can . $i . "> . $i . </a> . "\n\t" : "\n\t" .<a class="hover" disabled="disabled"> . $i . </a> . "\n\t"; } 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 ) { 使用方法: 上面的代码就已经加载这个类文件进来了,并且初始化了一些数据库连接参数! 下面介绍几个基本是方法函数: 以上方法可连续调用,比如: 复制代码 代码如下: $Rult = $Conn -> Table(user) -> Select(); //查询返回user表的所有记录 $Rult = $Conn -> Table(user) -> Page(20) -> Select();//查询返回user表的所有记录,并分页显示,每页20条;
|