A-A+

php数据库操作model类(使用__call方法)

2016年11月23日 PHP博文 暂无评论

本文实例讲述了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数据库操作入门教程》、《PHP基于pdo操作数据库技巧总结》、《PHP+MongoDB数据库操作技巧大全》、《php+Oracle数据库程序设计技巧总结》、《php+mssql数据库程序设计技巧总结》、《php+redis数据库程序设计技巧总结》、《php+mysqli数据库程序设计技巧总结》及《php常见数据库操作技巧汇总》

希望本文所述对大家PHP程序设计有所帮助。

标签:

Copyright © E网新时代 保留所有权利.   Theme  Ality站点地图
查询次数: 16
粤ICP备14073293号-1

用户登录

分享到: