php数据库操作model类(使用__call方法)


Posted in PHP onNovember 16, 2016

本文实例讲述了php数据库操作model类。分享给大家供大家参考,具体如下:

该数据库操作类使用__call()方法实现了数据的查找功能。

代码如下:

<?php
/*
作者 : shyhero
*/
define("HOSTNAME","127.0.0.1");
define("USERNAME","root");
define("PASSWORD","");
define("DATANAME","class");
class Model{
    private $link;
    private $tableName;
    private $zd;
    private $method = array(
      "where" => "",
      "order" => "",
      "limit" => "",
      "group" => "",
      "having" => ""
      );
    public function __construct($tableName){
      $this -> tableName = $tableName;
      try{
        $this -> link = mysqli_connect(HOSTNAME,USERNAME,PASSWORD,DATANAME);
        mysqli_set_charset($this -> link,"UTF8");
      }catch(Exception $e){
        echo "数据库连接失败";
      }
      $this -> desc();
    }
    public function __destruct(){
      mysqli_close($this -> link);
    }
    public function desc(){
      $sql = " desc {$this -> tableName}; ";
      $res = mysqli_query($this -> link,$sql);
      $arr = mysqli_fetch_all($res,MYSQLI_ASSOC);
      for($i = 0 ;$i < count($arr);$i++){
        $brr[] = $arr[$i]['Field'];
      }
      $this -> zd = $brr;
      return $brr;
    }
    public function __call($name,$value){
      $name = strtolower($name);
      if(array_key_exists($name,$this -> method)){
        if($name == 'order'){
          $this -> method['order'] = " order by ".$value[0];
        }elseif($name == 'group'){
        $this -> method['group'] = " group by ".$value[0];
        }else{
          $this -> method[$name] = " {$name} ".$value[0];
        }
      }else{
        return "the method is not found!";
      }
      return $this;
    }
    public function method(){
      return " {$this -> method['where']} {$this -> method['order']} {$this -> method['limit']} {$this -> method['group']} {$this -> method['having']}; ";
    }
    public function find($a="*"){
      if(in_array("{$a}",$this -> zd) || $a == "*"){
        $sql = "select {$a} from {$this -> tableName} {$this -> method()} ";
      }else{
        $sql = "select * from {$this -> tableName}";
      }
      //return $sql;
      $res = mysqli_query($this -> link,$sql);
      $arr = mysqli_fetch_all($res,MYSQLI_ASSOC);
      return $arr;
    }
}

用法示例:

<?php
  function __autoload($className){
    require($className.".class.php");
  }
  $a = new Model("stu");
  $a -> where("name = 'zhu'")->limit("5,10");
  var_dump($a -> find("name"));

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

PHP 相关文章推荐
php一次性删除前台checkbox多选内容的方法
Sep 22 PHP
利用yahoo汇率接口实现实时汇率转换示例 汇率转换器
Jan 14 PHP
Thinkphp中volist标签mod控制一定记录的换行BUG解决方法
Nov 04 PHP
php查询mssql出现乱码的解决方法
Dec 29 PHP
php 把数字转换成汉字的代码
Jul 21 PHP
php微信公众号js-sdk开发应用
Nov 28 PHP
PHP实现的回溯算法示例
Aug 15 PHP
PHP开发之归档格式phar文件概念与用法详解【创建,使用,解包还原提取】
Nov 17 PHP
PHP两个n位的二进制整数相加问题的解决
Aug 26 PHP
php中的buffer缓冲区用法分析
May 31 PHP
Laravel5.5 手动分页和自定义分页样式的简单实现
Oct 15 PHP
使用PHP开发留言板功能
Nov 19 PHP
php实现的简单数据库操作Model类
Nov 16 #PHP
iOS自定义提示弹出框实现类似UIAlertView的效果
Nov 16 #PHP
PHP中串行化用法示例
Nov 16 #PHP
PHP单态模式简单用法示例
Nov 16 #PHP
php实现替换手机号中间数字为*号及隐藏IP最后几位的方法
Nov 16 #PHP
php实现当前页面点击下载文件的实例代码
Nov 16 #PHP
php 文件下载 出现下载文件内容乱码损坏的解决方法(推荐)
Nov 16 #PHP
You might like
PHP4中实现动态代理
2006/10/09 PHP
PHP实现通过中文字符比率来判断垃圾评论的方法
2014/10/20 PHP
PHP实现十进制、二进制、八进制和十六进制转换相关函数用法分析
2017/04/25 PHP
PHP bin2hex()函数基础实例讲解
2019/02/11 PHP
jQuery之排序组件的深入解析
2013/06/19 Javascript
JavaScript实现两个Table固定表头根据页面大小自行调整
2014/01/03 Javascript
基于jQuery实现的QQ表情插件
2015/08/25 Javascript
Express实现前端后端通信上传图片之存储数据库(mysql)傻瓜式教程(一)
2015/12/10 Javascript
ajax在兼容模式下失效的快速解决方法
2016/03/22 Javascript
JavaScript性能优化之函数节流(throttle)与函数去抖(debounce)
2016/08/11 Javascript
node.js express安装及示例网站搭建方法(分享)
2016/08/22 Javascript
Bootstrap中datetimepicker使用小结
2016/12/28 Javascript
Vue数据驱动模拟实现3
2017/01/11 Javascript
基于twbsPagination.js分页插件使用心得(分享)
2017/10/21 Javascript
JS中注入eval, Function等系统函数截获动态代码
2019/04/03 Javascript
JS如何在不同平台实现多语言方式
2020/07/16 Javascript
用vue写一个日历
2020/11/02 Javascript
[38:41]2014 DOTA2国际邀请赛中国区预选赛 LGD VS CNB
2014/05/22 DOTA
Python random模块(获取随机数)常用方法和使用例子
2014/05/13 Python
Python随机数random模块使用指南
2016/09/09 Python
python利用rsa库做公钥解密的方法教程
2017/12/10 Python
python使用PIL剪切和拼接图片
2020/03/23 Python
Python利用for循环打印星号三角形的案例
2020/04/12 Python
Keras中的两种模型:Sequential和Model用法
2020/06/27 Python
浅析Python requests 模块
2020/10/09 Python
Sephora丝芙兰马来西亚官方网站:国际化妆品购物
2018/03/15 全球购物
英国领先的露营和露营车品牌之一:OLPRO
2019/08/06 全球购物
新西兰Bookabach:查找全球度假屋
2020/12/03 全球购物
xml有哪些解析技术?区别是什么
2016/04/26 面试题
如何估计一张表的大小(假设该表中有1万条数据)
2016/03/27 面试题
充分就业社区汇报材料
2014/05/07 职场文书
火灾现场处置方案
2014/05/28 职场文书
python将图片转为矢量图的方法步骤
2021/03/30 Python
python爬虫请求库httpx和parsel解析库的使用测评
2021/05/10 Python
MySql 缓存查询原理与缓存监控和索引监控介绍
2021/07/02 MySQL
python数字图像处理之图像自动阈值分割示例
2022/06/28 Python