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 相关文章推荐
Win9x/ME下Apache+PHP安装配置
Oct 09 PHP
PHP判断远程图片或文件是否存在的实现代码
Feb 20 PHP
php分页示例分享
Apr 30 PHP
destoon会员注册提示“数据校验失败(2)”解决方法
Jun 21 PHP
php socket实现的聊天室代码分享
Aug 16 PHP
php将12小时制转换成24小时制的方法
Mar 31 PHP
php自动更新版权信息显示的方法
Jun 19 PHP
10个超级有用的PHP代码片段果断收藏
Sep 23 PHP
WordPress中重置文章循环的rewind_posts()函数讲解
Jan 11 PHP
php处理复杂xml数据示例
Jul 11 PHP
LaravelS通过Swoole加速Laravel/Lumen详解
Mar 02 PHP
php中pcntl_fork详解
Apr 01 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字符串截取的简单方法
2013/07/04 PHP
CI框架装载器Loader.php源码分析
2014/11/04 PHP
php修改文件上传限制方法汇总
2015/04/07 PHP
基于Laravel5.4实现多字段登录功能方法示例
2017/08/11 PHP
php 的多进程操作实践案例分析
2020/02/28 PHP
jQuery使用ajaxSubmit()提交表单示例
2014/04/04 Javascript
avascript中的自执行匿名函数应用示例
2014/09/15 Javascript
jQuery实现简单二级下拉菜单
2015/04/12 Javascript
jQuery插件ajaxFileUpload异步上传文件
2016/10/19 Javascript
深入浅出webpack教程系列_安装与基本打包用法和命令参数详解
2017/09/10 Javascript
JavaScript 点击触发复制功能实例详解
2018/11/02 Javascript
JavaScript实现通讯录功能
2020/12/27 Javascript
JavaScript实现滚动加载更多
2020/12/27 Javascript
[02:09]抵达西雅图!中国军团加油!
2014/07/07 DOTA
python使用os模块的os.walk遍历文件夹示例
2014/01/27 Python
Python的Django框架中消息通知的计数器实现教程
2016/06/13 Python
pyenv命令管理多个Python版本
2017/03/26 Python
python 连接sqlite及简单操作
2017/06/30 Python
python正则表达式面试题解答
2020/04/28 Python
django2.0扩展用户字段示例
2019/02/13 Python
Django框架文件上传与自定义图片上传路径、上传文件名操作分析
2019/05/10 Python
PyQt5笔记之弹出窗口大全
2019/06/20 Python
python 判断linux进程,并杀死进程的实现方法
2019/07/01 Python
python求一个字符串的所有排列的实现方法
2020/02/04 Python
TensorFlow打印输出tensor的值
2020/04/19 Python
Pytorch mask-rcnn 实现细节分享
2020/06/24 Python
Python pickle模块常用方法代码实例
2020/10/10 Python
Python 排序最长英文单词链(列表中前一个单词末字母是下一个单词的首字母)
2020/12/14 Python
西班牙网上书店:Casa del Libro
2016/11/01 全球购物
物业客服专员岗位职责
2013/11/30 职场文书
卫生系统先进事迹
2014/05/13 职场文书
新学期标语
2014/06/30 职场文书
小学红领巾广播稿(3篇)
2014/09/13 职场文书
导游词之日月潭
2019/11/05 职场文书
Spring中bean的生命周期之getSingleton方法
2021/06/30 Java/Android
JS数组去重详情
2021/11/07 Javascript