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

歡迎訪問 生活随笔!

生活随笔

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

数据库

数据库类分页类

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

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

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

<?php //數據庫操作類 class Model {private $link = null;//連接標識private $tabName = null;//用于存儲表名private $fields = array();//字段列表private $pk;//主鍵的名字private $keys;//要查詢的字段private $where;//查詢條件private $order;//排序條件private $limit;//分頁條件//初始化數據庫連接public function __construct($tabName){$this->link = mysqli_connect(HOST,USER,PWD,DB);mysqli_set_charset($this->link,CHAR);$this->tabName = $tabName;//接收實例化時,傳遞的表名$this->getField();//獲取當前數據表內所有的字段}//查詢所有數據public function select(){$keys = '*';//默認查詢全部if (!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);}//查詢單條數據 public function find($findValue, $findKey = 'id'){$keys = '*';//默認查詢全部if (!empty($this->keys)) {$keys = $this->keys;$this->keys = null;//每次清除查詢條件}$sql = "SELECT {$keys} FROM {$this->tabName} WHERE {$findKey}='{$findValue}' LIMIT 1";$data = $this->query($sql);//判斷結果是否為空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){//判斷傳遞的參數是否是數組if (!is_array($arr)) return $this;//過濾非法參數foreach ($arr as $key => $val) {if (!in_array($val,$this->fields)) {unset($arr[$key]);}}//如果處理好的參數為空,直接返回自己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()){//直接給參數POST不合適//判斷$data 是否為空,賦值為POSTif (empty($data)) {$data = $_POST;}//篩選POST數據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}')";//執行添加操作, 返回 自增ID 或者 falsereturn $this->execute($sql);}//修改public function update($data = array()){//直接給參數POST不合適//判斷$data 是否為空,賦值為POSTif (empty($data)) {$data = $_POST;}//篩選POST里面的數據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);}//統計條數數量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){//執行SQL語句$result = mysqli_query($this->link, $sql);//判斷查詢結果if ($result && mysqli_num_rows($result) > 0 ) {$list = array();$list = mysqli_fetch_all($result,MYSQLI_ASSOC);mysqli_free_result($result);return $list;//返回查詢結果的二維數組} else {return false;//查詢失敗,返回false}}//增刪改 刪改時返回true/false 增時:自增IDprivate function execute($sql){//執行SQL語句$result = mysqli_query($this->link, $sql);//處理結果集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;}}//獲取數據表內的所有字段 和主鍵private function getField(){//查詢表結構$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);} }

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

<?php class Page {protected $total;//總條數.protected $num;//每頁顯示數.protected $allPage;//總頁數protected $url;//總頁數protected $page;//總頁數public function __construct($total, $num = 10){$this->total = $total;//得到總條數$this->num = $num;//得到每頁顯示數$this->getAllPage();//得到總頁數$this->getUrl();//獲取當前頁的URL路徑$this->getPage();//獲取頁碼}//計算總頁數protected function getAllPage(){$this->allPage = ceil($this->total / $this->num);}//獲取當前頁的URL路徑protected function getUrl(){$this->url = $_SERVER['PHP_SELF'];}//獲取頁碼protected function getPage(){//GET里獲取參數$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) * 每頁顯示數$limit = ($this->page - 1) * $this->num.','.$this->num;//x,yreturn $limit;} }










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

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。