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 相关文章推荐
php5.2时间相差8小时
Jan 15 PHP
PHP提取中文首字母
Apr 09 PHP
ajax 的post方法实例(带循环)
Jul 04 PHP
基于PHP读取TXT文件向数据库导入海量数据的方法
Apr 23 PHP
探讨file_get_contents与curl效率及稳定性的分析
Jun 06 PHP
php计算给定时间之前的函数用法实例
Apr 03 PHP
yii2.0实现pathinfo的形式访问的配置方法
Apr 06 PHP
php使用PDO获取结果集的方法
Feb 16 PHP
php创建图像具体步骤
Mar 13 PHP
php封装db类连接sqlite3数据库的方法实例
Dec 19 PHP
浅析PHP开发规范
Feb 05 PHP
php web环境和命令行环境下查找php.ini的位置
Jul 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
PHP4之真OO
2006/10/09 PHP
收集的PHP中与数组相关的函数
2007/03/22 PHP
PHP注释实例技巧
2008/10/03 PHP
PHP实现的增强性mhash函数
2015/05/27 PHP
日期 时间js控件
2009/05/07 Javascript
Nodejs极简入门教程(二):定时器
2014/10/25 NodeJs
Treegrid的动态加载实例代码
2016/04/29 Javascript
jQuery插件EasyUI获取当前Tab中iframe窗体对象的方法
2016/08/05 Javascript
JavaScript 函数模式详解及示例
2016/09/07 Javascript
详解Javascript函数声明与递归调用
2016/10/22 Javascript
详解Angualr 组件间通信
2017/01/21 Javascript
JS中的phototype详解
2017/02/04 Javascript
数组Array的一些方法(总结)
2017/02/17 Javascript
webpack本地开发环境无法用IP访问的解决方法
2018/03/20 Javascript
Vue项目中添加锁屏功能实现思路
2018/06/29 Javascript
微信运维交互机器人的示例代码
2018/11/12 Javascript
[01:56]林书豪DOTA2上海特级锦标赛励志短片
2016/03/05 DOTA
介绍Python中内置的itertools模块
2015/04/29 Python
举例讲解Django中数据模型访问外键值的方法
2015/07/21 Python
Python减少循环层次和缩进的技巧分析
2016/03/15 Python
python生成式的send()方法(详解)
2017/05/08 Python
Django实现组合搜索的方法示例
2018/01/23 Python
基于python的docx模块处理word和WPS的docx格式文件方式
2020/02/13 Python
Django 404、500页面全局配置知识点详解
2020/03/10 Python
Python中如何添加自定义模块
2020/06/09 Python
美国网上订购鲜花:FTD
2016/09/23 全球购物
欧铁通票官方在线销售网站:Eurail.com
2017/10/14 全球购物
Linux如何为某个操作添加别名
2015/02/05 面试题
UML设计模式笔试题
2014/06/07 面试题
精通CAD能手自荐书
2014/01/31 职场文书
总经理致辞
2015/07/29 职场文书
合作意向书怎么写
2019/06/24 职场文书
python 经纬度求两点距离、三点面积操作
2021/06/03 Python
利用Python多线程实现图片下载器
2022/03/25 Python
python中 .npy文件的读写操作实例
2022/04/14 Python
使用python生成大量数据写入es数据库并查询操作(2)
2022/09/23 Python