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网站来路获取代码(针对搜索引擎)
Jun 08 PHP
php中DOMDocument简单用法示例代码(XML创建、添加、删除、修改)
Dec 19 PHP
通过JavaScript或PHP检测Android设备的代码
Mar 09 PHP
如何突破PHP程序员的技术瓶颈分析
Jul 17 PHP
php实现水仙花数的4个示例分享
Apr 08 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(三)
Jun 23 PHP
PHP中Session可能会引起并发问题
Jun 26 PHP
php while循环控制的简单实例
May 30 PHP
php blowfish加密解密算法
Jul 02 PHP
php支付宝APP支付功能
Jul 29 PHP
详解laravel安装使用Passport(Api认证)
Jul 27 PHP
Laravel 之url参数,获取路由参数的例子
Oct 21 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
动态网站web开发 PHP、ASP还是ASP.NET
2006/10/09 PHP
php 执行系统命令的方法
2009/07/07 PHP
php写的带缓存数据功能的mysqli类
2012/09/06 PHP
PHP大文件分割上传 PHP分片上传
2017/08/28 PHP
JS模板实现方法
2013/04/03 Javascript
原生JS实现加入收藏夹的代码
2013/10/24 Javascript
解决用jquery load加载页面到div时,不执行页面js的问题
2014/02/22 Javascript
JS按回车键实现登录的方法
2014/08/25 Javascript
跟我学习javascript的arguments对象
2015/11/16 Javascript
深入理解ECMAScript的几个关键语句
2016/06/01 Javascript
使用JS中的exec()方法构造正则表达式验证
2016/08/01 Javascript
Node.js原生api搭建web服务器的方法步骤
2019/02/15 Javascript
vue 使用async写数字动态加载效果案例
2020/07/18 Javascript
python提取字典key列表的方法
2015/07/11 Python
利用python操作SQLite数据库及文件操作详解
2017/09/22 Python
Python开发中爬虫使用代理proxy抓取网页的方法示例
2017/09/26 Python
Python二叉树的定义及常用遍历算法分析
2017/11/24 Python
python如何求解两数的最大公约数
2018/09/27 Python
基于python if 判断选择结构的实例详解
2019/05/06 Python
python装饰器常见使用方法分析
2019/06/26 Python
Python OpenCV图像指定区域裁剪的实现
2019/10/30 Python
tensorflow estimator 使用hook实现finetune方式
2020/01/21 Python
基于Python+QT的gui程序开发实现
2020/07/03 Python
Windows下PyCharm配置Anaconda环境(超详细教程)
2020/07/31 Python
详解基于python的全局与局部序列比对的实现(DNA)
2020/10/07 Python
CSS3的RGBA中关于整数和百分比值的转换
2015/08/04 HTML / CSS
如何使用amaze ui的分页样式封装一个通用的JS分页控件
2020/08/21 HTML / CSS
学校七一活动方案
2014/01/19 职场文书
电脑销售顾问自荐信
2014/01/29 职场文书
表彰先进的通报
2014/01/31 职场文书
2015年社区文体活动总结
2015/03/25 职场文书
关于上班时间调整的通知
2015/04/23 职场文书
初中军训感想
2015/08/07 职场文书
《穷人》教学反思
2016/02/19 职场文书
陶瓷类经典广告语集锦
2019/10/25 职场文书
django学习之ajax post传参的2种格式实例
2021/05/14 Python