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页面运行时间的函数介绍
Jul 01 PHP
Codeigniter(CI)框架分页函数及相关知识
Nov 03 PHP
PHP获取数组最后一个值的2种方法
Jan 21 PHP
php浏览历史记录的方法
Mar 10 PHP
PHP读取txt文本文件并分页显示的方法
Mar 11 PHP
php制作的简单验证码识别代码
Jan 26 PHP
Symfony2创建页面实例详解
Mar 18 PHP
php+MySql实现登录系统与输出浏览者信息功能
Jul 01 PHP
PHP文件管理之实现网盘及压缩包的功能操作
Sep 20 PHP
Laravel Validator自定义错误返回提示消息并在前端展示
May 09 PHP
tp5 实现列表数据根据状态排序
Oct 18 PHP
PHP使用PDO 连接与连接管理操作实例分析
Apr 21 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 使用fopen函数创建、打开文件详解及实例代码
2016/09/24 PHP
php中namespace及use用法分析
2016/12/06 PHP
PHP生成随机数的方法总结
2018/03/01 PHP
PHP使用 Imagick 扩展实现图片合成,圆角处理功能示例
2019/09/09 PHP
Laravel Eloquent分表方法并使用模型关联的实现
2019/11/25 PHP
Thinkphp 框架配置操作之配置加载与读取配置实例分析
2020/05/15 PHP
jquery $.ajax()取xml数据的小问题解决方法
2010/11/20 Javascript
JavaScript字符串String和Array操作的有趣方法
2012/12/18 Javascript
深入分析JQuery和JavaScript的异同
2014/10/23 Javascript
浅谈轻量级js模板引擎simplite
2015/02/13 Javascript
详解Node.Js如何处理post数据
2016/09/19 Javascript
Node.js对MongoDB数据库实现模糊查询的方法
2017/05/03 Javascript
详解create-react-app 2.0版本如何启用装饰器语法
2018/10/23 Javascript
微信小程序实现音频文件播放进度的实例代码
2020/03/02 Javascript
jQuery HTML css()方法与css类实例详解
2020/05/20 jQuery
如何通过vscode运行调试javascript代码
2020/07/24 Javascript
python 生成不重复的随机数的代码
2011/05/15 Python
Python Requests模拟登录实现图书馆座位自动预约
2018/04/27 Python
利用Python将数值型特征进行离散化操作的方法
2018/11/06 Python
python实现转圈打印矩阵
2019/03/02 Python
分析经典Python开发工程师面试题
2019/04/08 Python
详解使用python绘制混淆矩阵(confusion_matrix)
2019/07/14 Python
Python 等分切分数据及规则命名的实例代码
2019/08/16 Python
django ObjectDoesNotExist 和 DoesNotExist的用法
2020/07/09 Python
AmazeUI 导航条的实现示例
2020/08/14 HTML / CSS
Allsole美国/加拿大:英国一家专门出售品牌鞋子的网站
2018/10/21 全球购物
日本订房网站,预订日本星级酒店/温泉旅馆:Relux(支持中文)
2020/01/03 全球购物
全球异乡人的跨境社交电商平台:Kouhigh口嗨网
2020/07/24 全球购物
在校大学生的职业生涯规划书
2014/03/14 职场文书
团队经理竞聘书
2014/03/31 职场文书
《画杨桃》教学反思
2014/04/13 职场文书
消防安全标语
2014/06/07 职场文书
春游踏青活动方案
2014/08/14 职场文书
成都人事代理协议书
2014/10/25 职场文书
电工实训心得体会
2016/01/14 职场文书
《彼得与狼》教学反思
2016/02/20 职场文书