前言:在程序的任何地方使用
$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);
}
閱讀更多 那年明月刀 的文章