php面向对象之单表操作类
生活随笔
收集整理的這篇文章主要介紹了
php面向对象之单表操作类
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
<?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;}
}
轉載于:https://blog.51cto.com/2262805/1394400
總結
以上是生活随笔為你收集整理的php面向对象之单表操作类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 梦到别人掉河里了好吗
- 下一篇: 梦到肉骨头什么意思