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将fileterms函数返回的结果变成可读的形式
Apr 21 PHP
php中日期加减法运算实现代码
Dec 08 PHP
第六章 php目录与文件操作
Dec 30 PHP
php堆排序实现原理与应用方法
Jan 03 PHP
php+mysqli使用预处理技术进行数据库查询的方法
Jan 28 PHP
php发送html格式文本邮件的方法
Jun 10 PHP
PHP中substr_count()函数获取子字符串出现次数的方法
Jan 07 PHP
phpcms中的评论样式修改方法
Oct 21 PHP
Symfony2针对输入时间进行查询的方法分析
Jun 28 PHP
PDO::_construct讲解
Jan 27 PHP
Yii框架常见缓存应用实例小结
Sep 09 PHP
Laravel 实现添加多语言提示信息
Oct 25 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
为php4加入动态flash文件的生成的支持
2006/10/09 PHP
php使用mysqli向数据库添加数据的方法
2015/03/20 PHP
javascript 面向对象全新理练之数据的封装
2009/12/03 Javascript
我的javascript 函数链之演变
2011/04/07 Javascript
使用滤镜设置透明导致 IE 6/7/8/9 解析异常的解决方法
2011/04/07 Javascript
jQuery获得内容和属性示例代码
2014/01/16 Javascript
javascript顺序加载图片的方法
2015/07/18 Javascript
jQuery Timelinr实现垂直水平时间轴插件(附源码下载)
2016/02/16 Javascript
怎么引入(调用)一个JS文件
2016/05/26 Javascript
关于微信jssdk实现多图片上传的一点心得分享
2016/12/13 Javascript
理解AngularJs篇:30分钟快速掌握AngularJs
2016/12/23 Javascript
jQuery html表格排序插件tablesorter使用方法详解
2017/02/10 Javascript
javascript获取以及设置光标位置
2017/02/16 Javascript
jQuery EasyUI 选项卡面板tabs的使用实例讲解
2017/12/25 jQuery
layui获取选中行数据的实例讲解
2018/08/19 Javascript
vue项目中极验验证的使用代码示例
2019/12/03 Javascript
js实现左右轮播图
2020/01/09 Javascript
vue实现移动端H5数字键盘组件使用详解
2020/08/25 Javascript
详解Python的Lambda函数与排序
2016/10/25 Python
python实现百度语音识别api
2018/04/10 Python
python判断设备是否联网的方法
2018/06/29 Python
浅谈python中str字符串和unicode对象字符串的拼接问题
2018/12/04 Python
解决python写入带有中文的字符到文件错误的问题
2019/01/31 Python
Python绘制堆叠柱状图的实例
2019/07/09 Python
python os.path.isfile()因参数问题判断错误的解决
2019/11/29 Python
python面向对象之类属性和类方法案例分析
2019/12/30 Python
Python基础之字符串操作常用函数集合
2020/02/09 Python
解决pymysql cursor.fetchall() 获取不到数据的问题
2020/05/15 Python
django跳转页面传参的实现
2020/09/17 Python
深入剖析webstorage[html5的本地数据处理]
2016/07/11 HTML / CSS
CHARLES & KEITH英国官网:新加坡时尚品牌
2018/07/04 全球购物
爱护花草树木的标语
2014/06/11 职场文书
《鸡兔同笼》教学反思
2016/02/19 职场文书
2019新员工试用期转正工作总结范文
2019/08/21 职场文书
详解Mysql 函数调用优化
2021/04/07 MySQL
JavaScript如何利用Promise控制并发请求个数
2021/05/14 Javascript