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 相关文章推荐
Zend framework处理一个http请求的流程分析
Feb 08 PHP
使用PHPMYADMIN操作mysql数据库添加新用户和数据库的方法
Apr 02 PHP
第4章 数据处理-php字符串的处理-郑阿奇(续)
Jul 04 PHP
PHP中“简单工厂模式”实例代码讲解
Sep 04 PHP
PHP SPL标准库之数据结构堆(SplHeap)简单使用实例
May 12 PHP
Yii2隐藏frontend/web和backend/web的方法
Dec 12 PHP
使用Composer安装Yii框架的方法
Mar 15 PHP
PHP生成可点击刷新的验证码简单示例
May 13 PHP
PHP实现多图上传(结合uploadify插件)思路分析
Nov 30 PHP
关于php几种字符串连接的效率比较(详解)
Feb 22 PHP
PHP实现根据密码长度显示安全条
Jul 04 PHP
laravel 解决后端无法获取到前端Post过来的值问题
Oct 22 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在Web开发领域的优势
2006/10/09 PHP
php中的一个中文字符串截取函数
2007/02/14 PHP
PHP实现采集程序原理和简单示例代码
2007/03/18 PHP
linux下删除7天前日志的代码(php+shell)
2011/01/02 PHP
PHP基于MySQL数据库实现对象持久层的方法
2015/06/17 PHP
PHP  实现等比压缩图片尺寸和大小实例代码
2016/10/08 PHP
PHP缩略图生成和图片水印制作
2017/01/07 PHP
PHP7扩展开发教程之Hello World实现方法示例
2017/08/03 PHP
excel操作之Add Data to a Spreadsheet Cell
2007/06/12 Javascript
19个很有用的 JavaScript库推荐
2011/06/27 Javascript
jWiard 基于JQuery的强大的向导控件介绍
2011/10/28 Javascript
jquery ajax提交整个表单元素的快捷办法
2013/03/27 Javascript
jquery实现简单的拖拽效果实例兼容所有主流浏览器
2013/06/21 Javascript
jquery $.each 和for怎么跳出循环终止本次循环
2013/09/27 Javascript
深入领悟JavaScript中的面向对象
2013/11/18 Javascript
javascript获取flash版本号的方法
2014/11/20 Javascript
javascript学习笔记整理(概述、变量、数据类型简介)
2015/10/25 Javascript
JS实现六边形3D拖拽翻转效果的方法
2016/09/11 Javascript
jQuery Datatable 多个查询条件自定义提交事件(推荐)
2017/08/24 jQuery
微信小程序wx.request实现后台数据交互功能分析
2017/11/25 Javascript
一些可能会用到的Node.js面试题
2019/06/15 Javascript
在Python中操作字典之clear()方法的使用
2015/05/21 Python
Python中的数据对象持久化存储模块pickle的使用示例
2016/03/03 Python
Python处理JSON时的值报错及编码报错的两则解决实录
2016/06/26 Python
Python 中迭代器与生成器实例详解
2017/03/29 Python
多版本Python共存的配置方法
2017/05/22 Python
在Mac上删除自己安装的Python方法
2018/10/29 Python
python 装饰器功能与用法案例详解
2020/03/06 Python
使用HTML5拍照示例代码
2013/08/06 HTML / CSS
日本著名化妆品零售网站:Cosme Land
2019/03/01 全球购物
印度手工编织服装和家居用品商店:Fabindi
2019/10/07 全球购物
C#的几个面试问题
2016/05/22 面试题
学生会部长竞聘书
2014/03/31 职场文书
幼儿园见习报告
2014/10/30 职场文书
农村结婚典礼主持词
2015/06/29 职场文书
一行Python命令实现批量加水印
2022/04/07 Python