php实现mysql数据库操作类分享


Posted in PHP onFebruary 14, 2014
<?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 ) {
     $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条;

 

PHP 相关文章推荐
phpMyadmin 用户权限中英对照
Apr 02 PHP
检测png图片是否完整的php代码
Sep 06 PHP
PHP strncasecmp字符串比较的小技巧
Jan 04 PHP
php报表之jpgraph柱状图实例代码
Aug 22 PHP
XAMPP安装与使用方法详细解析
Nov 27 PHP
PHP同时连接多个mysql数据库示例代码
Mar 17 PHP
php生成zip文件类实例
Apr 07 PHP
WordPress中邮件的一些修改和自定义技巧
Dec 15 PHP
centos+php+coreseek+sphinx+mysql之一coreseek安装篇
Oct 25 PHP
ThinkPHP框架表单验证操作方法
Jul 19 PHP
laravel实现批量更新多条记录的方法示例
Oct 22 PHP
浅析PHP 中move_uploaded_file 上传中文文件名失败
Apr 17 PHP
php将session放入memcached的设置方法
Feb 14 #PHP
smarty获得当前url的方法分享
Feb 14 #PHP
smarty模板中拼接字符串的方法
Feb 14 #PHP
php的sprintf函数的用法 控制浮点数格式
Feb 14 #PHP
PHP中$_FILES的使用方法及注意事项说明
Feb 14 #PHP
php $_SERVER windows系统与linux系统下的区别说明
Feb 14 #PHP
PHP COOKIE及时生效的方法介绍
Feb 14 #PHP
You might like
PHP 的几个配置文件函数
2006/12/21 PHP
PHP为表单获取的URL 地址预设 http 字符串函数代码
2010/05/26 PHP
ThinkPHP的RBAC(基于角色权限控制)深入解析
2013/06/17 PHP
常用的php图片处理类(水印、等比缩放、固定高宽)分享
2015/06/19 PHP
thinkphp的dump函数无输出实例代码
2016/11/15 PHP
form表单传递数组数据、php脚本接收的实例
2017/02/09 PHP
PHP设计模式(七)组合模式Composite实例详解【结构型】
2020/05/02 PHP
基于jquery的DIV随滚动条滚动而滚动的代码
2012/07/20 Javascript
JavaScript动态操作表格实例(添加,删除行,列及单元格)
2013/11/25 Javascript
JavaScript控制两个列表框listbox左右交换数据的方法
2015/03/18 Javascript
Angular实现跨域(搜索框的下拉列表)
2017/02/16 Javascript
Extjs表单输入框异步校验的插件实现方法
2017/03/20 Javascript
vue过渡和animate.css结合使用详解
2017/06/14 Javascript
详解Webstorm 新建.vue文件支持高亮vue语法和es6语法
2017/10/26 Javascript
NodeJs项目中关闭ESLint的方法
2018/08/09 NodeJs
微信小程序如何获取用户收货地址
2018/11/27 Javascript
React 使用recharts实现散点地图的示例代码
2018/12/07 Javascript
js基于canvas实现时钟组件
2021/02/07 Javascript
Python实现SMTP发送邮件详细教程
2021/03/02 Python
PyQt5实现拖放功能
2018/04/25 Python
Python实现线性插值和三次样条插值的示例代码
2019/11/13 Python
python GUI库图形界面开发之PyQt5信号与槽机制、自定义信号基础介绍
2020/02/25 Python
pycharm 关掉syntax检查操作
2020/06/09 Python
Python tkinter之ComboBox(下拉框)的使用简介
2021/02/05 Python
Betsey Johnson官网:妖娆可爱的连衣裙及鞋子、手袋和配件
2016/12/30 全球购物
美国快时尚彩妆品牌:Winky Lux(透明花瓣润唇膏)
2018/11/06 全球购物
英国在线定做百叶窗网站:Make My Blinds
2020/08/17 全球购物
常见的软件开发流程有哪些
2015/11/14 面试题
优秀交警事迹材料
2014/01/26 职场文书
《小石潭记》教学反思
2014/02/13 职场文书
家长寄语大全
2014/04/02 职场文书
机关作风整顿个人整改措施2014
2014/09/17 职场文书
汽车机电维修工求职信
2014/09/30 职场文书
群众路线学习心得体会范文
2014/11/05 职场文书
中学综治宣传月活动总结
2015/05/07 职场文书
2015年园林绿化工作总结
2015/05/23 职场文书