<?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;}
}