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 正则 过滤html 的超链接
Jun 02 PHP
PHP初学者最感迷茫的问题小结
Mar 27 PHP
通达OA公共代码 php常用检测函数
Dec 14 PHP
我的php学习笔记(毕业设计)
Feb 21 PHP
php设计模式之单例模式使用示例
Jan 20 PHP
php生成随机数的三种方法
Sep 10 PHP
php实现在多维数组中查找特定value的方法
Jul 29 PHP
PHP获取一年有几周以及每周开始日期和结束日期
Aug 06 PHP
Linux环境下php实现给网站截图的方法
May 03 PHP
php批量修改表结构实例
May 24 PHP
PHP用continue跳过本次循环中剩余代码的注意点
Jun 27 PHP
Thinkphp 框架扩展之数据库驱动常用方法小结
Apr 23 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 session机制
2011/07/17 PHP
ThinkPHP6.0如何利用自定义验证规则规范的实现登陆
2020/12/16 PHP
JavaScript实现Java中StringBuffer的方法
2015/02/09 Javascript
JS简单实现无缝滚动效果实例
2016/08/24 Javascript
JS短信验证码倒计时功能的实现(没有验证码,只有倒计时)
2016/10/27 Javascript
详解js数组的完全随机排列算法
2016/12/16 Javascript
vue使用Axios做ajax请求详解
2017/06/07 Javascript
详解nodejs模板引擎制作
2017/06/14 NodeJs
jQuery实现可拖动进度条实例代码
2017/06/21 jQuery
微信小程序使用navigateTo数据传递的实例
2017/09/26 Javascript
原生js基于canvas实现一个简单的前端截图工具代码实例
2019/09/10 Javascript
对layui初始化列表的CheckBox属性详解
2019/09/13 Javascript
js实现图片粘贴到网页
2019/12/06 Javascript
nodejs使用socket5进行代理请求的实现
2020/02/21 NodeJs
如何在微信小程序中使用骨架屏的步骤
2020/06/12 Javascript
Python算法之求n个节点不同二叉树个数
2017/10/27 Python
Python面向对象之接口、抽象类与多态详解
2018/08/27 Python
Python实现的在特定目录下导入模块功能分析
2019/02/11 Python
Python面向对象之Web静态服务器
2019/09/03 Python
pycharm导入源码的具体步骤
2020/08/04 Python
Ancheer官方户外和运动商店:销售电动自行车
2019/08/07 全球购物
惠普新加坡官方商店:HP Singapore
2020/04/17 全球购物
大学生创业项目方案
2014/03/08 职场文书
党员干部承诺书范文
2014/03/25 职场文书
大学开学计划书
2014/04/30 职场文书
委托书的写法
2014/08/30 职场文书
小学“向国旗敬礼”网上签名寄语活动总结
2014/09/27 职场文书
三严三实学习心得体会
2014/10/13 职场文书
婚礼庆典答谢词
2015/01/20 职场文书
服务行业标语口号
2015/12/26 职场文书
导游经典开场白——导游词
2019/04/17 职场文书
资深HR教你写好简历中的自我评价
2019/05/07 职场文书
教你怎么用Python监控愉客行车程
2021/04/29 Python
Nebula Graph解决风控业务实践
2022/03/31 MySQL
【海涛dota解说】海涛小满开黑4v5被破两路翻盘潮汐第一视角解说
2022/04/01 DOTA
mysql的Buffer Pool存储及原理
2022/04/02 MySQL