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的ASP防火墙
Oct 09 PHP
php xml实例 留言本
Mar 20 PHP
php 论坛采集程序 模拟登陆,抓取页面 实现代码
Jul 09 PHP
php数组查找函数总结
Nov 18 PHP
php设计模式之委托模式
Feb 13 PHP
Laravel路由设定和子路由设定实例分析
Mar 30 PHP
laravel5创建service provider和facade的方法详解
Jul 26 PHP
PHP下的浮点运算不准的解决方法
Oct 27 PHP
ThinkPHP下表单令牌错误与解决方法分析
May 20 PHP
php实现的二分查找算法示例
Jun 20 PHP
PHP模型Model类封装数据库操作示例
Mar 14 PHP
PHP+fiddler抓包采集微信文章阅读数点赞数的思路详解
Dec 20 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
php内存缓存实现方法
2015/01/24 PHP
php通过两层过滤获取留言内容的方法
2016/07/11 PHP
php+redis消息队列实现抢购功能
2018/02/08 PHP
php实现的PDO异常处理操作分析
2018/12/27 PHP
javascript下数值型比较难点说明
2010/06/07 Javascript
基于jQuery的仿flash的广告轮播代码
2010/11/04 Javascript
javascript自执行函数之伪命名空间封装法
2010/12/25 Javascript
js动态添加事件并可传参数示例代码
2013/10/21 Javascript
javascript文本框内输入文字倒计数的方法
2015/02/24 Javascript
jQuery实现给页面换肤的方法
2015/05/30 Javascript
js中substring和substr两者区别和使用方法
2015/11/09 Javascript
JS实用技巧小结(屏蔽错误、div滚动条设置、背景图片位置等)
2016/06/16 Javascript
基于HTML+CSS+JS实现增加删除修改tab导航特效代码
2016/08/05 Javascript
使用JS编写的随机抽取号码的小程序
2017/08/11 Javascript
vue-cli3项目打包后自动化部署到服务器的方法
2020/09/16 Javascript
使用Python监控文件内容变化代码实例
2018/06/04 Python
python3利用tcp实现文件夹远程传输
2018/07/28 Python
python3判断url链接是否为404的方法
2018/08/10 Python
python实现小世界网络生成
2019/11/21 Python
PyTorch安装与基本使用详解
2020/08/31 Python
Python 实现PS滤镜的旋涡特效
2020/12/03 Python
英国领先的狗和宠物美容专家:Christies Direct
2017/04/03 全球购物
Ted Baker美国官网:英国时尚品牌
2018/10/29 全球购物
JMS中Topic和Queue有什么区别
2013/05/15 面试题
个人自我鉴定怎么写
2013/10/28 职场文书
竞聘医务工作人员的自我评价分享
2013/11/04 职场文书
企业厂长岗位职责
2013/12/17 职场文书
护理专业毕业生自荐信范文
2014/01/05 职场文书
电信营业员自我评价分享
2014/01/17 职场文书
人力资源经理的岗位职责
2014/03/02 职场文书
乡镇保密工作责任书
2014/07/28 职场文书
镇创先争优活动总结
2014/08/28 职场文书
教师工作总结范文2014
2014/11/10 职场文书
简单的辞职信怎么写
2015/02/28 职场文书
同学聚会致辞集锦
2015/07/28 职场文书
放假通知怎么写
2015/08/18 职场文书