五指cms系統使用教程:資料庫調用db類使用教程

前言:在程序的任何地方使用

$db=loadclass('db');

就可以使用$db->get_one或者$db->get_list

重點:相關方法使用說明

1.$db>get_list()最簡單

獲取某一個表的列表數組,並帶有查詢條件,和分頁。

特別注意:$startid$(開始位址),pagesize(每頁數量),$page(當前頁)可以動態加載某一頁,可以減少查詢負擔。

分頁代碼:$this->db->pages;

缺點:不夠靈活,當兩個表聯合查詢的時候不靈了

2.多表聯合查詢:三個語句並用;可獲得分頁。

$sql1="SELECT count(*) as num FROM `wz_$master_table` a LEFT JOIN `wz_$attr_table` b ON a.id=b.id WHERE $where";

//$s_count是個數組$s_count[num]出來數值。

$s_count = $this->db->get_page_list_count($sql1,"");

$sql2="SELECT * FROM `wz_$master_table` a LEFT JOIN `wz_$attr_table` b ON a.id=b.id WHERE $where";

$result_arr = $this->db->get_page_list($sql2,0,$pagesize,$page);

//pages是全局函數,第一個參數是總數,第二個參數當前頁,第三個參數每頁幾條記錄,還有第四個參數是urlrule,輸出分頁字符串

$pages = pages($s_count['num'], $page, 10);

缺點:如果想取得所有數據後再用數組重新處理成新的帶分頁的數據,這個就不靈了

3.可以利用$this->db->query和$this->db->fetch_array()

譬如:我們網站的評論模塊寫法

function comment_listing(){

$c=$GLOBALS;

$cid=$c['cid'];

$article_id=$c['article_id'];

$pagesize=intval($c['pagesize']?$c['pagesize']:5);

$page=intval($c['page']?$c['page']:1);

$sql="SELECT * FROM `wz_txbcomment` WHERE `cid`=".$cid." and `article_id`=".$article_id;

$query=$this->db->query($sql);

$txb_comment_tree=array();

while($r = $this->db->fetch_array($query)) {

$txb_comment_tree[] = $r;

}

//print_r($txb_comment_tree);exit();

//$txb_comment_tree=$this->db->get_list("txbcomment",array("cid"=>$cid,"article_id"=>$article_id),'*',0,10,0,"comm_time desc");

//循環為這個數組推進一個元素 avatar 獲得img地址,注意&$lab傳址

foreach($txb_comment_tree as &$lab) {

$lab["avatar"]=avatar($lab['user_id'],180);

}

// $x $v 必須每次定義一個,否則會出錯。

$txb_comment_tree=get_sub_tree($txb_comment_tree,"parent_id","comm_id",0);

//print_r($x);

$count=count($txb_comment_tree);

$start=($page-1)*$pagesize;

$v=array_slice($txb_comment_tree,$start,$pagesize);

$tmp['data_content']=$v;

$tmp['totalItem'] = $count;

// $tmp['pageSize'] = $c['pagesize'];

$tmp['curPage']=$c['page'];

echo json_encode($tmp);

}


分享到:


相關文章: