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 截取字符串 分别适合GB2312和UTF8编码情况
Feb 12 PHP
php后退一页表单内容保存实现方法
Jun 17 PHP
解析mysql 表中的碎片产生原因以及清理
Jun 22 PHP
修改ThinkPHP缓存为Memcache的方法
Jun 25 PHP
php 问卷调查结果统计
Oct 08 PHP
解决微信授权回调页面域名只能设置一个的问题
Dec 11 PHP
PHP实现RSA签名生成订单功能【支付宝示例】
Jun 06 PHP
laravel中短信发送验证码的实现方法
Apr 25 PHP
ThinkPHP框架实现定时执行任务的两种方法分析
Sep 04 PHP
PHP crypt()函数的用法讲解
Feb 15 PHP
Laravel等框架模型关联的可用性浅析
Dec 15 PHP
XAMPP升级PHP版本实现步骤解析
Sep 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
图形数字验证代码
2006/10/09 PHP
php 随机数的产生、页面跳转、件读写、文件重命名、switch语句
2009/08/07 PHP
php判断是否为json格式的方法
2014/03/04 PHP
PHP内置过滤器FILTER使用实例
2014/06/25 PHP
PHP的Yii框架中Model模型的学习教程
2016/03/29 PHP
详解thinkphp实现excel数据的导入导出(附完整案例)
2016/12/29 PHP
JAVASCRIPT下判断IE与FF的比较简单的方式
2008/10/17 Javascript
Javascript new关键字的玄机 以及其它
2010/08/25 Javascript
为jQuery.Treeview添加右键菜单的实现代码
2010/10/22 Javascript
jQuery层次选择器选择元素使用介绍
2013/04/18 Javascript
jquery 添加节点的几种方法介绍
2013/09/04 Javascript
设置jsf的选择框h:selectOneMenu为不可编辑状态的方法
2014/01/07 Javascript
整理Javascript流程控制语句学习笔记
2015/11/29 Javascript
分享10个优化代码的CSS和JavaScript工具
2016/05/11 Javascript
JavaScript递归操作实例浅析
2016/10/31 Javascript
纯JS焦点图特效实例(可一个页面多用)
2016/12/07 Javascript
vue 下列表侧滑操作实例代码详解
2018/07/24 Javascript
Node.JS枚举统计当前文件夹和子目录下所有代码文件行数
2019/08/23 Javascript
Angular之jwt令牌身份验证的实现
2020/02/14 Javascript
JQuery Ajax如何实现注册检测用户名
2020/09/25 jQuery
2款Python内存检测工具介绍和使用方法
2014/06/01 Python
python 地图经纬度转换、纠偏的实例代码
2018/08/06 Python
python里 super类的工作原理详解
2019/06/19 Python
python3+opencv 使用灰度直方图来判断图片的亮暗操作
2020/06/02 Python
python实现批量转换图片为黑白
2020/06/16 Python
解决python打开https出现certificate verify failed的问题
2020/09/03 Python
如何基于Python和Flask编写Prometheus监控
2020/11/25 Python
运行python提示no module named sklearn的解决方法
2020/11/29 Python
建材业务员岗位职责
2013/12/08 职场文书
女方婚礼新郎答谢词
2014/01/11 职场文书
春节活动策划方案
2014/01/24 职场文书
奥林匹克的口号
2014/06/13 职场文书
学雷锋宣传标语
2014/06/25 职场文书
乡镇党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
财务个人年度总结范文
2015/02/26 职场文书
婚育证明样本
2015/06/16 职场文书