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通用检测函数集合
Nov 25 PHP
特转载一高手总结PHP学习资源和链接.
Dec 05 PHP
PHP中uploaded_files函数使用方法详解
Mar 09 PHP
用来解析.htpasswd文件的PHP类
Sep 05 PHP
phpmyadmin显示utf8_general_ci中文乱码的问题终级篇
Apr 08 PHP
php文件上传简单实现方法
Jan 24 PHP
php生成不重复随机数、数组的4种方法分享
Mar 30 PHP
PHP安装memcached扩展笔记
May 28 PHP
PHP中通过trigger_error触发PHP错误示例
Jun 23 PHP
php利用fsockopen GET/POST提交表单及上传文件
May 22 PHP
PHP命名空间与自动加载机制的基础介绍
Aug 25 PHP
PHP SESSION跨页面传递失败解决方案
Dec 11 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连接access数据库方法
2013/11/11 PHP
php分页示例分享
2014/04/30 PHP
PHP 微信支付类 demo
2015/11/30 PHP
php生成图片验证码的方法
2016/04/15 PHP
PHP之十六个魔术方法详细介绍
2016/11/01 PHP
PHP实现简单ajax Loading加载功能示例
2016/12/28 PHP
jqPlot 图表中文API使用文档及源码和在线示例
2012/02/07 Javascript
js获取键盘按键响应事件(兼容各浏览器)
2013/05/16 Javascript
Bootstrap表单布局样式代码
2016/05/31 Javascript
基于jQuery实现页面搜索功能
2020/03/26 Javascript
jQuery插件之validation插件
2017/03/29 jQuery
Angular 4依赖注入学习教程之ClassProvider的使用(三)
2017/06/04 Javascript
原生JavaScrpit中异步请求Ajax实现方法
2017/11/03 Javascript
原生JS实现瀑布流插件
2018/02/06 Javascript
vue2.0使用v-for循环制作多级嵌套菜单栏
2018/06/25 Javascript
vue系列之requireJs中引入vue-router的方法
2018/07/18 Javascript
微信小程序开发之点击按钮退出小程序的实现方法
2019/04/26 Javascript
javascript实现动态时钟的启动和停止
2020/07/29 Javascript
JS document对象简单用法完整示例
2020/01/14 Javascript
[06:59]DOTA2-DPC中国联赛3月7日Recap集锦
2021/03/11 DOTA
遍历python字典几种方法总结(推荐)
2016/09/11 Python
Python双向循环链表实现方法分析
2018/07/30 Python
PyTorch搭建一维线性回归模型(二)
2019/05/22 Python
python+webdriver自动化环境搭建步骤详解
2019/06/03 Python
opencv python 图像轮廓/检测轮廓/绘制轮廓的方法
2019/07/03 Python
python实现的自动发送消息功能详解
2019/08/15 Python
python滑块验证码的破解实现
2019/11/10 Python
TensorFlow固化模型的实现操作
2020/05/26 Python
Django DRF APIView源码运行流程详解
2020/08/17 Python
css3实现文字扫光渐变动画效果的示例
2017/11/07 HTML / CSS
医院检讨书范文
2014/02/01 职场文书
经理秘书求职自荐信范文
2014/03/23 职场文书
软件专业毕业生个人自我鉴定
2014/04/17 职场文书
校优秀毕业生主要事迹
2014/05/26 职场文书
简单租房协议书(范本)
2014/10/13 职场文书
Python可视化神器pyecharts之绘制箱形图
2022/07/07 Python