PHP封装的数据库模型Model类完整示例【基于PDO】
本文实例讲述了PHP封装的数据库模型Model类。分享给大家供大家参考,具体如下:
tableName=PRE.$tableName; //获取当前数据表中有哪些字段 $this->getFields(); } /** *获取当前表的所有字段 *@returnarray成功则返回一维数组字段 */ publicfunctiongetFields() { //查看当前表结构 $sql="desc{$this->tableName}"; $res=$this->query($sql);//返回pdo对象 //var_dump($res); if($res){ $arr=$res->fetchAll(2); //var_dump($arr); //从二维数组中取出指定下标的列 $this->allFields=array_column($arr,"Field"); return$this->allFields; }else{ die("表名错误"); } } /** *添加操作 *@paramarray$data要添加的数组 *@returnint返回受影响行数 */ publicfunctionadd($data) { //判断是否是数组 if(!is_array($data)){ return$this; } //判断是否全是非法字段 if(empty($data)){ die("非法字段"); } //过滤非法字段 foreach($dataas$k=>$v){ if(!in_array($k,$this->allFields)){ unset($data[$k]); } } //将数组中的键取出 $keys=array_keys($data); //将数组中取出的键转为字符串拼接 $key=implode(",",$keys); //将数组中的值转化为字符串拼接 $value=implode("','",$data); //准备SQL语句 $sql="insertinto{$this->tableName}({$key})values('{$value}')"; $this->sql=$sql; //执行并发送SQL,返回受影响行数 return(int)$this->exec($sql); } /** *删除操作 *@paramstring$id要删除的id *@returnint返回受影响行数 */ publicfunctiondelete($id="") { //判断id是否存在 if(empty($id)){ $where=$this->where; }else{ $where="whereid={$id}"; } $sql="deletefrom{$this->tableName}{$where}"; $this->sql=$sql; //执行并发送SQL,返回受影响行数 return(int)$this->exec($sql); } /** *修改操作 *@paramarray$data要修改的数组 *@returnint返回受影响行数 */ publicfunctionupdate($data) { //判断是否是数组 if(!is_array($data)){ return$this; } //判断是否全是非法字段 if(empty($data)){ die('全是非法字段'); } $str=""; //过滤非法字段 foreach($dataas$k=>$v){ //字段为id时,判断id是否存在的 if($k=="id"){ $this->where="whereid={$v}"; unset($data[$k]); continue; } //若字段不为id,则过滤后再拼接成set字段 if(in_array($k,$this->allFields)){ $str.="{$k}='{$v}',"; }else{ unset($data[$k]); } } //判断是否传了条件 if(empty($this->where)){ die('请传入修改条件'); } //去除右边的, $str=rtrim($str,','); $sql="update{$this->tableName}set{$str}{$this->where}"; //echo$sql; $this->sql=$sql; return(int)$this->exec($sql); } /** *查询多条数据 *@returnarray成功返回二维数组,失败返回空数组 */ publicfunctionselect() { $sql="select{$this->field}from{$this->tableName}{$this->where}{$this->order}{$this->limit}"; $this->sql=$sql; //执行SQL,结果集是一个对象 $res=$this->query($sql); //判断是否查询成功, if($res){ //成功返回二维数组 return$res->fetchAll(2); } //失败返回空数组 return[]; } /** *查询一条数组 *@paramstring$id要查询的id *@returnarray返回一条数据 */ publicfunctionfind($id="") { //判断是否存在id if(empty($id)){ $where=$this->where; }else{ $where="whereid={$id}"; } $sql="select{$this->field}from{$this->tableName}{$where}{$this->order}limit1"; $this->sql=$sql; //执行sql,结果集为对象 $res=$this->query($sql); //判断是否查询成功 if($res){ //成功则返回一条数据(一维数组) $result=$res->fetchAll(2); return$result[0]; } //失败返回空数组 return[]; } /** *统计总数目 *@returnint返回总数 */ publicfunctioncount() { $sql="selectcount(*)astotalfrom{$this->tableName}{$this->where}limit1"; $this->sql=$sql; //执行SQL,结果集为对象 $res=$this->query($sql); //处理结果集 if($res){ $result=$res->fetchAll(2); //var_dump($result); return$result[0]["total"]; } return0; } /** *设置要查询的字段信息 *@paramstring$field要查询的字段 *@returnobject返回自己,保证连贯操作 */ publicfunctionfield($field) { //判断字段是否存在 if(empty($filed)){ return$this; } $this->field=$field; return$this; } /** *获取最后执行的sql语句 *@returnstringsql语句 */ publicfunction_sql() { return$this->sql; } /** *where条件 *@paramstring$where要输入的where条件 *@returnobject返回自己,保证连贯操作 */ publicfunctionwhere($where) { $this->where="where".$where; return$this; } /** *order条件 *@paramstring$order要输入的order条件 *@returnobject返回自己,保证连贯操作 */ publicfunctionorder($order) { $this->order="orderby".$order; return$this; } /** *limit条件 *@paramstring$limit要输入的limit条件 *@returnobject返回自己,保证连贯操作 */ publicfunctionlimit($limit) { $this->limit="limit".$limit; return$this; } }
更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP基于pdo操作数据库技巧总结》、《php+mysqli数据库程序设计技巧总结》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。