日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

数据库类分页类

發(fā)布時間:2025/3/16 数据库 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据库类分页类 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

今天漲姿勢了,學習了數(shù)據(jù)庫和分頁的類的封裝,感覺很好用,向大家推薦一下

數(shù)據(jù)庫類(把數(shù)據(jù)庫封裝起來,更好的對數(shù)據(jù)操作)

<?php //數(shù)據(jù)庫操作類 class Model {private $link = null;//連接標識private $tabName = null;//用于存儲表名private $fields = array();//字段列表private $pk;//主鍵的名字private $keys;//要查詢的字段private $where;//查詢條件private $order;//排序條件private $limit;//分頁條件//初始化數(shù)據(jù)庫連接public function __construct($tabName){$this->link = mysqli_connect(HOST,USER,PWD,DB);mysqli_set_charset($this->link,CHAR);$this->tabName = $tabName;//接收實例化時,傳遞的表名$this->getField();//獲取當前數(shù)據(jù)表內(nèi)所有的字段}//查詢所有數(shù)據(jù)public function select(){$keys = '*';//默認查詢?nèi)縤f (!empty($this->keys)) {$keys = $this->keys;$this->keys = null;//每次清除查詢條件}$where = '';if (!empty($this->where)) {$where = 'WHERE '.$this->where;$this->where = null;//每次清除查詢條件}$order = '';if (!empty($this->order)) {$order = 'ORDER BY '.$this->order;$this->order = null;//每次清除查詢條件}$limit = '';if (!empty($this->limit)) {$limit = 'LIMIT '.$this->limit;$this->limit = null;//每次清除查詢條件}echo $sql = "SELECT {$keys} FROM {$this->tabName} {$where} {$order} {$limit}";return $this->query($sql);}//查詢單條數(shù)據(jù) public function find($findValue, $findKey = 'id'){$keys = '*';//默認查詢?nèi)縤f (!empty($this->keys)) {$keys = $this->keys;$this->keys = null;//每次清除查詢條件}$sql = "SELECT {$keys} FROM {$this->tabName} WHERE {$findKey}='{$findValue}' LIMIT 1";$data = $this->query($sql);//判斷結(jié)果是否為空if (empty($data)) {return false;}return $data[0];}//獲取排序條件public function order($order){$this->order = $order;return $this;//返回自己}//獲取排序條件public function limit($limit){$this->limit = $limit;return $this;//返回自己}//獲取要查詢的條件public function where($where){$this->where = $where;return $this;//返回自己}//指定查詢條件public function field($arr){//判斷傳遞的參數(shù)是否是數(shù)組if (!is_array($arr)) return $this;//過濾非法參數(shù)foreach ($arr as $key => $val) {if (!in_array($val,$this->fields)) {unset($arr[$key]);}}//如果處理好的參數(shù)為空,直接返回自己if (empty($arr)) return $this;//生成SQL條件,存為屬性.$this->keys = implode(',',$arr);//返回自己,用于對象鏈操作return $this;}//刪除public function del($delValue, $delKey = 'id'){$sql = "DELETE FROM {$this->tabName} WHERE {$delKey}='{$delValue}'";return $this->execute($sql);}//增加public function add($data = array()){//直接給參數(shù)POST不合適//判斷$data 是否為空,賦值為POSTif (empty($data)) {$data = $_POST;}//篩選POST數(shù)據(jù)foreach ($data as $k => $v) {//如果POST里的$k 在字段列表之中 就保留if (in_array($k, $this->fields)) {$list[$k] = $v;}}//生成SQL中的 key 和value$keys = implode(',',array_keys($list));$values = implode("','",array_values($list));$sql = "INSERT INTO {$this->tabName} ({$keys}) VALUES ('{$values}')";//執(zhí)行添加操作, 返回 自增ID 或者 falsereturn $this->execute($sql);}//修改public function update($data = array()){//直接給參數(shù)POST不合適//判斷$data 是否為空,賦值為POSTif (empty($data)) {$data = $_POST;}//篩選POST里面的數(shù)據(jù)foreach ($data as $k => $v) {//如果POST里的$k 在字段列表中if (in_array($k, $this->fields) && $k != $this->pk) {$list[] = "`{$k}`='{$v}'";}}//生成SET條件$set = implode(',',$list);$sql = "UPDATE {$this->tabName} SET {$set} WHERE `{$this->pk}`='{$data[$this->pk]}'";return $this->execute($sql);}//統(tǒng)計條數(shù)數(shù)量public function count(){$where = '';if (!empty($this->where)) {$where = 'WHERE '.$this->where;$this->where = null;//每次清除查詢條件}$sql = "SELECT COUNT(*) totel FROM {$this->tabName} {$where}";$totel = $this->query($sql);// var_dump($totel);return $totel[0]['totel'];}/*************************輔助方法*****************************///查詢private function query($sql){//執(zhí)行SQL語句$result = mysqli_query($this->link, $sql);//判斷查詢結(jié)果if ($result && mysqli_num_rows($result) > 0 ) {$list = array();$list = mysqli_fetch_all($result,MYSQLI_ASSOC);mysqli_free_result($result);return $list;//返回查詢結(jié)果的二維數(shù)組} else {return false;//查詢失敗,返回false}}//增刪改 刪改時返回true/false 增時:自增IDprivate function execute($sql){//執(zhí)行SQL語句$result = mysqli_query($this->link, $sql);//處理結(jié)果集if ($result && mysqli_affected_rows($this->link) > 0 ) {//添加時 回返回自增IDif (mysqli_insert_id($this->link) > 0 ) {//添加時 返回自增IDreturn mysqli_insert_id($this->link);} else {//刪改時 的操作完成return true;}} else {//操作失敗return false;}}//獲取數(shù)據(jù)表內(nèi)的所有字段 和主鍵private function getField(){//查詢表結(jié)構(gòu)$sql = "DESC {$this->tabName}";$list = $this->query($sql);// var_dump($list);$fields = array();foreach ($list as $key => $val) {$fields[] = $val['Field'];//獲取主鍵 if ($val['Key'] == 'PRI') {$this->pk = $val['Field'];}}// var_dump($fields);//給屬性賦值$this->fields = $fields;}//銷毀資源public function __destruct(){mysqli_close($this->link);} }

分頁類(使得對數(shù)據(jù)庫的記錄更好的進行分頁處理)

<?php class Page {protected $total;//總條數(shù).protected $num;//每頁顯示數(shù).protected $allPage;//總頁數(shù)protected $url;//總頁數(shù)protected $page;//總頁數(shù)public function __construct($total, $num = 10){$this->total = $total;//得到總條數(shù)$this->num = $num;//得到每頁顯示數(shù)$this->getAllPage();//得到總頁數(shù)$this->getUrl();//獲取當前頁的URL路徑$this->getPage();//獲取頁碼}//計算總頁數(shù)protected function getAllPage(){$this->allPage = ceil($this->total / $this->num);}//獲取當前頁的URL路徑protected function getUrl(){$this->url = $_SERVER['PHP_SELF'];}//獲取頁碼protected function getPage(){//GET里獲取參數(shù)$page = empty($_GET['p'])?1:$_GET['p'];//范圍判斷$page = max($page ,1);$page = min($this->allPage , $page);//給屬性賦值$this->page = $page;}//生成分頁的HTML代碼public function show(){//獲取搜索條件$params = "";foreach ($_GET as $k => $v) {//將頁碼條件排除掉if ($k == 'p') continue;//拼接搜索條件$params .= "&{$k}={$v}";}/*共X條 當前x/y頁 首頁/上/下/尾 */$html = "共{$this->total}條 ";$html .= "當前{$this->page} / {$this->allPage}頁 ";$html .= "<a href='{$this->url}?p=1{$params}'>首頁</a> ";$html .= "<a href='{$this->url}?p=".($this->page - 1)."{$params}'>上一頁</a> ";$html .= "<a href='{$this->url}?p=".($this->page + 1)."{$params}'>下一頁</a> ";$html .= "<a href='{$this->url}?p={$this->allPage}{$params}'>尾頁</a>";return $html;}//返回limit條件public function limit(){// (當前頁 - 1) * 每頁顯示數(shù)$limit = ($this->page - 1) * $this->num.','.$this->num;//x,yreturn $limit;} }










與50位技術專家面對面20年技術見證,附贈技術全景圖

總結(jié)

以上是生活随笔為你收集整理的数据库类分页类的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。