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 相关文章推荐
adodb与adodb_lite之比较
Dec 31 PHP
用php获取本周,上周,本月,上月,本季度日期的代码
Aug 05 PHP
Php Mssql操作简单封装支持存储过程
Dec 11 PHP
phpmyadmin里面导入sql语句格式的大量数据的方法
Jun 05 PHP
Ajax实时验证用户名/邮箱等是否已经存在的代码打包
Dec 01 PHP
解析php curl_setopt 函数的相关应用及介绍
Jun 17 PHP
解析php中如何直接执行SHELL
Jun 28 PHP
解析curl提交GET,POST,Cookie的简单方法
Jun 29 PHP
php顺序查找和二分查找示例
Mar 27 PHP
PHP会话控制实例分析
Dec 24 PHP
thinkPHP5项目中实现QQ第三方登录功能
Oct 20 PHP
php实现二叉树中和为某一值的路径方法
Oct 14 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防注入安全代码
2008/04/09 PHP
详解PHP显示MySQL数据的三种方法
2008/06/05 PHP
php 函数使用方法与函数定义方法
2010/05/09 PHP
PHP数组循环操作详细介绍 附实例代码
2013/02/03 PHP
javascript实现 在光标处插入指定内容
2007/05/25 Javascript
javascript计算用户打开网页的停留时间
2014/01/09 Javascript
jquery中对于批量deferred的处理方法
2014/01/22 Javascript
Javascript简单改变表单元素背景的方法
2015/07/15 Javascript
jQuery实现可以编辑的表格实例详解【附demo源码下载】
2016/07/09 Javascript
ES6中参数的默认值语法介绍
2017/05/03 Javascript
使用ionic(选项卡栏tab) icon(图标) ionic上拉菜单(ActionSheet) 实现通讯录界面切换实例代码
2017/10/20 Javascript
对angularJs中ng-style动态改变样式的实例讲解
2018/09/30 Javascript
vue实现设置载入动画和初始化页面动画效果
2019/10/28 Javascript
vue实现的封装全局filter并统一管理操作示例
2020/02/02 Javascript
微信分享invalid signature签名错误踩过的坑
2020/04/11 Javascript
Vue文本模糊匹配功能如何实现
2020/07/30 Javascript
跟老齐学Python之玩转字符串(1)
2014/09/14 Python
python实现网站的模拟登录
2016/01/04 Python
Python实现识别手写数字 简易图片存储管理系统
2018/01/29 Python
强悍的Python读取大文件的解决方案
2019/02/16 Python
wxPython实现绘图小例子
2019/11/19 Python
python生成器用法实例详解
2019/11/22 Python
python3光学字符识别模块tesserocr与pytesseract的使用详解
2020/02/26 Python
Python正则表达式高级使用方法汇总
2020/06/18 Python
Django def clean()函数对表单中的数据进行验证操作
2020/07/09 Python
windows10在visual studio2019下配置使用openCV4.3.0
2020/07/14 Python
纯css3使用vw和vh实现自适应的方法
2018/02/09 HTML / CSS
美国在线面料商店:Fashion Fabrics Club
2020/01/31 全球购物
在校生汽车维修实习自我鉴定
2013/09/19 职场文书
环境科学专业个人求职信
2013/09/26 职场文书
实习生的自我鉴定范文欣赏
2013/11/20 职场文书
小学优秀教育工作者事迹材料
2014/05/09 职场文书
2014年平安创建工作总结
2014/11/24 职场文书
看上去很美观后感
2015/06/10 职场文书
雷锋观后感
2015/06/10 职场文书
Java并发编程之详解CyclicBarrier线程同步
2021/06/23 Java/Android