PHP实现的mysql操作类【MySQL与MySQLi方式】


Posted in PHP onOctober 07, 2017

本文实例讲述了PHP实现的mysql操作类。分享给大家供大家参考,具体如下:

首先是mysql方式

<?php
class ConnectionMySQL{
  //主机
  private $host="localhost";
  //数据库的username
  private $name="root";
  //数据库的password
  private $pass="";
  //数据库名称
  private $table="phptest";
  //编码形式
  private $ut="utf-8";
  //构造函数
  function __construct(){
    $this->ut=$ut;
    $this->connect();
  }
  //数据库的链接
  function connect(){
    $link=mysql_connect($this->host,$this->name,$this->pass) or die ($this->error());
    mysql_select_db($this->table,$link) or die("没该数据库:".$this->table);
    mysql_query("SET NAMES '$this->ut'");
  }
  function query($sql, $type = '') {
    if(!($query = mysql_query($sql))) $this->show('Say:', $sql);
    return $query;
  }
  function show($message = '', $sql = '') {
    if(!$sql) echo $message;
    else echo $message.'<br>'.$sql;
  }
  function affected_rows() {
    return mysql_affected_rows();
  }
  function result($query, $row) {
    return mysql_result($query, $row);
  }
  function num_rows($query) {
    return @mysql_num_rows($query);
  }
  function num_fields($query) {
    return mysql_num_fields($query);
  }
  function free_result($query) {
    return mysql_free_result($query);
  }
  function insert_id() {
    return mysql_insert_id();
  }
  function fetch_row($query) {
    return mysql_fetch_row($query);
  }
  function version() {
    return mysql_get_server_info();
  }
  function close() {
    return mysql_close();
  }
  //向$table表中插入值
  function fn_insert($table,$name,$value){
    $this->query("insert into $table ($name) value ($value)");
  }
  //根据$id值删除表$table中的一条记录
  function fn_delete($table,$id,$value){
    $this->query("delete from $table where $id=$value");
    echo "id为". $id." 的记录被成功删除!";
  }
}
$db = new ConnectionMySQL();
$db->fn_insert('test','id,name,sex',"'','hongtenzone','M'");
$db->fn_delete('test', 'id', 1);
?>

mysqli的方式:

<?php
class Mysql{
  private $LocalHost = 'localhost';
  private $LoaclUser = '';
  private $LocalPass = '';
  private $LocalBase = '';
  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 . '" rel="external nofollow" >' . $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 );
  }
}

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
在PHP的图形函数中显示汉字
Oct 09 PHP
支持oicq头像的留言簿(一)
Oct 09 PHP
PHP+MYSQL开发工具及资源收藏
Jan 02 PHP
Joomla下利用configuration.php存储简单数据
May 19 PHP
PHP下对数组进行排序的函数
Aug 08 PHP
PHP 将逗号、空格、回车分隔的字符串转换为数组的函数
Jun 07 PHP
php数组中删除元素的实现代码
Jun 22 PHP
php使用GD创建保持宽高比缩略图的方法
Apr 17 PHP
如何把php5.3版本升级到php5.4或者php5.5
Jul 31 PHP
thinkphp的dump函数无输出实例代码
Nov 15 PHP
PHP实现转盘抽奖算法分享
Apr 15 PHP
利用PHP内置SERVER开启web服务(本地开发使用)
Mar 09 PHP
PHP实现打包下载文件的方法示例
Oct 07 #PHP
PHP基于PDO调用sqlserver存储过程通用方法【基于Yii框架】
Oct 07 #PHP
PHP使用PDO调用mssql存储过程的方法示例
Oct 07 #PHP
Laravel 5.5官方推荐的Nginx配置学习教程
Oct 06 #PHP
php判断文件上传图片格式的实例详解
Sep 30 #PHP
PHP实现的基于单向链表解决约瑟夫环问题示例
Sep 30 #PHP
PHP基于自定义函数实现的汉字转拼音功能实例
Sep 30 #PHP
You might like
用PHP和MySQL保存和输出图片
2006/10/09 PHP
PHP 远程关机实现代码
2009/11/10 PHP
打造超酷的PHP数据饼图效果实现代码
2011/11/23 PHP
PHP页面实现定时跳转的方法
2014/10/31 PHP
php单元测试phpunit入门实例教程
2017/11/17 PHP
JavaScript isPrototypeOf和hasOwnProperty使用区别
2010/03/04 Javascript
jQuery 名称冲突的解决方法
2011/04/08 Javascript
JavaScript初学者应注意的七个细节详细介绍
2012/12/27 Javascript
JavaScript作用域与作用域链深入解析
2013/12/06 Javascript
JavaScript不刷新实现浏览器的前进后退功能
2014/11/05 Javascript
javascript实现延时显示提示框特效代码
2016/04/27 Javascript
Angularjs的键盘事件的绑定
2017/07/27 Javascript
JavaScript Math对象和调试程序的方法分析
2019/05/13 Javascript
基于webpack4+vue-cli3项目实现换肤功能
2019/07/17 Javascript
js中复选框的取值及赋值示例详解
2020/10/18 Javascript
js动态生成表格(节点操作)
2021/01/12 Javascript
Python中处理字符串的相关的len()方法的使用简介
2015/05/19 Python
python判断字符串编码的简单实现方法(使用chardet)
2016/07/01 Python
Python中json格式数据的编码与解码方法详解
2016/07/01 Python
Python爬虫框架scrapy实现downloader_middleware设置proxy代理功能示例
2018/08/04 Python
python远程邮件控制电脑升级版
2019/05/23 Python
详解python和matlab的优势与区别
2019/06/28 Python
python matplotlib 绘图 和 dpi对应关系详解
2020/03/14 Python
Python中Selenium库使用教程详解
2020/07/23 Python
柒牌官方商城:中国男装优秀品牌
2017/06/30 全球购物
西班牙电子产品购物网站:Electronicamente
2018/07/26 全球购物
新闻专业本科生的自我评价分享
2013/11/20 职场文书
护士实习鉴定范文
2013/12/22 职场文书
优秀团支部事迹材料
2014/02/08 职场文书
餐饮总经理岗位职责
2014/03/07 职场文书
群教个人对照检查材料
2014/08/20 职场文书
副乡长民主生活会个人对照检查材料思想汇报
2014/10/01 职场文书
安全教育培训制度
2015/08/06 职场文书
暑假开始了,你的暑假学习计划写好了吗?
2019/07/04 职场文书
基于Python实现的购物商城管理系统
2021/04/27 Python
Spring Data JPA框架的核心概念和Repository接口
2022/04/28 Java/Android