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 相关文章推荐
一个没有MYSQL数据库支持的简易留言本的编写
Oct 09 PHP
PHP 存储文本换行实现方法
Jan 05 PHP
解析php5配置使用pdo
Jul 03 PHP
php cURL和Rolling cURL并发方式比较
Oct 30 PHP
PHP的反射类ReflectionClass、ReflectionMethod使用实例
Aug 05 PHP
php通过array_unshift函数添加多个变量到数组前端的方法
Mar 18 PHP
php多重接口的实现方法
Jun 20 PHP
PHP实现生成带背景的图形验证码功能
Oct 03 PHP
PHP创建自己的Composer包方法
Apr 09 PHP
PHP观察者模式实例分析【对比JS观察者模式】
May 22 PHP
TP5(thinkPHP5框架)实现显示错误信息及行号功能的方法
Jun 03 PHP
PHP实现页面静态化深入讲解
Mar 04 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
thinkphp在模型中自动完成session赋值示例代码
2014/09/09 PHP
反射调用private方法实践(php、java)
2015/12/21 PHP
PHP中__autoload和Smarty冲突的简单解决方法
2016/04/08 PHP
PHP如何实现跨域
2016/05/30 PHP
php删除一个路径下的所有文件夹和文件的方法
2018/02/07 PHP
Laravel 简单实现Ajax滚动加载示例
2019/10/22 PHP
javascript实现促销倒计时+fixed固定在底部
2013/09/18 Javascript
jQuery+HTML5加入购物车代码分享
2020/10/29 Javascript
js变形金刚文字特效代码分享
2015/08/20 Javascript
使用Bootstrap框架制作查询页面的界面实例代码
2016/05/27 Javascript
EasyUI学习之Combobox下拉列表(1)
2016/12/29 Javascript
深入对Vue.js $watch方法的理解
2017/03/20 Javascript
微信小程序图片选择、上传到服务器、预览(PHP)实现实例
2017/05/11 Javascript
详解基于node的前端项目编译时内存溢出问题
2017/08/01 Javascript
微信小程序支付之c#后台实现方法
2017/10/19 Javascript
Vue父组件如何获取子组件中的变量
2019/07/24 Javascript
jQuery 实现扁平式小清新导航
2020/07/07 jQuery
JS实现按比例缩小图片宽高
2020/08/24 Javascript
[01:48]2018DOTA2亚洲邀请赛主赛事第二日五佳镜头 VG完美团战逆转TNC
2018/04/05 DOTA
使用Python判断IP地址合法性的方法实例
2014/03/13 Python
python使用marshal模块序列化实例
2014/09/25 Python
Python的__builtin__模块中的一些要点知识
2015/05/02 Python
Django1.9 加载通过ImageField上传的图片方法
2018/05/25 Python
python scp 批量同步文件的实现方法
2019/01/03 Python
将pymysql获取到的数据类型是tuple转化为pandas方式
2020/05/15 Python
keras 自定义loss损失函数,sample在loss上的加权和metric详解
2020/05/23 Python
Python爬取股票信息,并可视化数据的示例
2020/09/26 Python
解决pytorch 数据类型报错的问题
2021/03/03 Python
CSS3对背景图片的裁剪及尺寸和位置的设定方法
2016/03/07 HTML / CSS
HTML5 Canvas画线技巧——实现绘制一个像素宽的细线
2013/08/02 HTML / CSS
台湾网友喜爱的综合型网路购物商城:Yahoo! 奇摩购物中心
2018/03/10 全球购物
Kickers鞋英国官网:男士、女士和儿童鞋
2021/03/08 全球购物
英国珠宝和手表专家:Pleasance & Harper
2020/10/21 全球购物
青年教师培训方案
2014/02/06 职场文书
勤俭节约倡议书
2014/04/14 职场文书
情况说明书格式范文
2014/05/06 职场文书