<?php //数据库单表操作类 define("HOST","localhost"); define("USER","root"); define("PASS",""); define("DBNAME","lamp78"); class Db { protected $link; //连接资源 protected $tablename; //表名 protected $pk=‘id‘; //主键字段名 protected $fields=array(); //当前表的字段信息 protected $where=array();//封装搜索条件属性 protected $order=null; //排序属性 protected $limit=null; //分页属性(获取部分数据) public function __construct($tablename) { $this->tablename = $tablename; // 数据库连接 $this->link=@mysql_connect(HOST,USER,PASS) or die(‘数据库连接失败!‘); mysql_set_charset("utf8"); mysql_select_db(DBNAME,$this->link); //获取当前表的结构和主键名 $this->getFields(); } //私有方法,加载当前表中的所有字段信息 private function getFields(){ $sql = "desc {$this->tablename}"; $result = mysql_query($sql,$this->link); //解析表结构信息 while($row = mysql_fetch_assoc($result)){ $this->fields[]=$row[‘Field‘]; //获取字段名 //判断并获取主键名 if($row[‘Key‘]=="PRI"){ $this->pk = $row[‘Field‘]; } } mysql_free_result($result); } //封装各种条件或获取所有对应数据信息 public function select() { $list = array(); //拼装sql语句 $sql ="select * from {$this->tablename}"; //判断并封装where条件 if(count($this->where)>0){ $sql.=" where ".implode(" and ",$this->where); } //判断并封装order排序条件 if($this->order){ $sql.=" order by ".$this->order; } //判断并封装分页条件 if($this->limit){ $sql.=" limit ".$this->limit; } //执行查询,获取数据。 $result = mysql_query($sql,$this->link); echo $sql; //解析结果集 while($row = mysql_fetch_assoc($result)){ $list[]=$row; } mysql_free_result($result); //释放结果集 return $list; } //获取封装条件的总数据条数 public function total() { $list = array(); //拼装sql语句 $sql ="select count(*) from {$this->tablename}"; //判断并封装where条件 if(count($this->where)>0){ $sql.=" where ".implode(" and ",$this->where); } //执行查询,获取数据。 $result = mysql_query($sql,$this->link); return mysql_result($result,0,0); } //获取所有数据 public function findAll() { $list = array(); //拼装sql语句 $sql ="select * from {$this->tablename}"; //执行查询,获取数据。 $result = mysql_query($sql,$this->link); //解析结果集 while($row = mysql_fetch_assoc($result)){ $list[]=$row; } mysql_free_result($result); //释放结果集 return $list; } /** * 获取指定id号的单条数据信息 * @param int id 获取信息的主键id值。 * @return array 返回值,找到数据则返回数组,否则返回null */ public function find($id) { $sql = "select * from {$this->tablename} where {$this->pk}={$id}"; //执行查询 $result = mysql_query($sql,$this->link); //判断是有信息 if($result && mysql_num_rows($result)>0){ return mysql_fetch_assoc($result); }else{ return null; } } //执行删除 public function delete($id) { $sql = "delete from {$this->tablename} where {$this->pk}={$id}"; //执行删除 mysql_query($sql,$this->link); //返回影响行数 return mysql_affected_rows($this->link); } //执行信息添加 public function insert($data=array()){ //判断参数是否有值,若没有则尝试从post自己获取 if(empty($data)){ $data = $_POST; } //过滤所有字段 $fieldlist = array(); $valuelist = array(); foreach($data as $k=>$v){ //判断是否是有效字段 if(in_array($k,$this->fields)){ $fieldlist[] = $k; $valuelist[] = $v; } } //拼装sql语句 $sql = "insert into {$this->tablename}(".implode(",",$fieldlist).") values(‘".implode("‘,‘",$valuelist)."‘)"; echo $sql; //执行添加 mysql_query($sql,$this->link); //返回自增信息 return mysql_insert_id($this->link); } //执行信息修改 public function update($data=array()){ //判断参数是否有值,若没有则尝试从post自己获取 if(empty($data)){ $data = $_POST; } //过滤所有字段 $fieldlist = array(); foreach($data as $k=>$v){ //判断是否是有效字段 if(in_array($k,$this->fields) && $k!=$this->pk){ $fieldlist[] = "{$k}=‘{$v}‘"; } } //拼装sql语句 $sql = "update {$this->tablename} set ".implode(",",$fieldlist)." where {$this->pk}=".$_POST[$this->pk]; echo $sql; //执行添加 mysql_query($sql,$this->link); //返回自增信息 return mysql_insert_id($this->link); } //封装搜索条件方法 public function where($data) { $this->where[]=$data; return $this; } //封装排序方法 public function order($data) { $this->order=$data; return $this; } //封装分页方法 public function limit($m,$n=0) { if($n>0){ $this->limit = $m.",".$n; }else{ $this->limit = $m; } return $this; } }
本文出自 “梦之翼” 博客,转载请与作者联系!