首页 > 语言 > PHP > 正文

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

2024-05-04 23:52:31
字体:
来源:转载
供稿:网友

本文实例讲述了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教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选