解析用PHP操作MySql數(shù)據(jù)庫(4)_PHP教程
教程Tag:暫無Tag,歡迎添加,賺取U幣!
/*
* 最常用的分頁方法,只需要傳3個參數(shù)
* tablename 表名, where 查詢條件, orderby 排序字段(默認以id倒序排列)
*/
function get_rows(tablename, where="", orderby=""){
this->table["tablename"] = tablename;
this->table["where"] = where;
orderby ? this->table["orderby"] = orderby : "";
arr = array(
"page" => this->show_page(), //分頁代碼
"rows" => this->get_rows_by_sql(), //記錄數(shù)
"sum" => this->total_records, //總記錄數(shù)
);
return arr;
}
/*
* 特殊查詢,sql_query 查詢sql語句, row_count 統(tǒng)計總數(shù)
*/
function get_rows_sql(sql_query, row_count=0) {
this->total_records = row_count;
arr["rows"] = this->get_rows_by_sql(sql_query);
arr["page"] = this->show_page();
arr["sum"] = this->total_records;
return arr;
}
function get_sql(){
if (this->total_records>10000) {
this->sql = "SELECT ".this->table["fileds"]." FROM `".this->table["tablename"]."` ".(this->table["where"]!=""?" WHERE ".this->table["where"].’ AND ’.this->table["id"].’>=’:’ WHERE ’.this->table["id"].’>=’).’(SELECT ’.this->table["id"].’ FROM `’.this->table["tablename"].’` ORDER BY ’.this->table["id"].’ LIMIT ’.this->page_size*(this->page-1).’, 1)’." ORDER BY ".this->table["orderby"]." ".this->table["descasc"]." LIMIT ".this->page_size;
}else{
this->sql = "SELECT ".this->table["fileds"]." FROM `".this->table["tablename"]."` ".(this->table["where"]!=""?" WHERE ".this->table["where"]:"")." ORDER BY ".this->table["orderby"]." ".this->table["descasc"]." LIMIT ".this->page_size*(this->page-1).", ".this->page_size;
}
//SELECT * FROM articles ORDER BY id DESC LIMIT 0, 20
//SELECT * FROM articles WHERE category_id = 123 AND id >= (SELECT id FROM articles ORDER BY id LIMIT 10000, 1) LIMIT 10
return this->sql; //SQL語句
}
function set_url(){
arr_url = array();
parse_str(_SERVER["QUERY_STRING"], arr_url);
unset(arr_url["page"]);
if (empty(arr_url)){
str = "page=";
}else{
str = http_build_query(arr_url)."&page=";
}
this->url = "http://"._SERVER["HTTP_HOST"]._SERVER["PHP_SELF"]."?".str;
}
}
?>
如果您加了新功能,或者是有改進,請與大家一起分享。
測試代碼如下,db.php 請到這里下載:
http://dwww.cn/news/2008-6/2008662043517349.shtml
<?php
db_config["hostname"] = "127.0.0.1"; //服務器地址
db_config["username"] = "root"; //數(shù)據(jù)庫用戶名
db_config["password"] = "root"; //數(shù)據(jù)庫密碼
db_config["database"] = "wap_blueidea_com"; //數(shù)據(jù)庫名稱
db_config["charset"] = "utf8";
config["charset"] = "utf-8"; //網(wǎng)站編碼
include(’db.php’);
include(’pagelist.php’);
db = new db();
db->connect(db_config);
header("content-type:text/html;charset=".config["charset"]);//設置頁面編碼
pl = new pagelist();
arr = pl->get_rows(’table_name’);
unset(pl);
echo ’<pre style="text-align:left">’;
print_r(arr);
echo ’</pre>’;
//指定特殊 sql 時候
pl = new pagelist();
sql = ’SELECT * FROM `wap_article` AS a, `wap_article_info` AS b WHERE a.id=b.articleid’;
arr = pl->get_rows_sql(sql);
unset(pl);
echo ’<pre style="text-align:left">’;
print_r(arr);
echo ’</pre>’;
?>
當表中的記錄總數(shù)在 10000條以上時,使用了 子查詢分頁,這樣效率會更高一些,數(shù)據(jù)量小的時候,直接查詢更快。這個是老王說的,參考這里:
http://hi.baidu.com/thinkinginlamp/blog/item/c5dea0ecdfef5e392697910f.html
相關PHP教程:
- 【PHP Munee】調(diào)整圖片尺寸 + 合并/壓縮CSS JS + 緩存等功能于一身的類
- Detector:檢測用戶瀏覽器環(huán)境的php類
- PHP Thumb:生成圖片縮略圖的類
- Hybrid Auth:通過微博/社交網(wǎng)站和ID來提供驗證功能實現(xiàn)同步登錄網(wǎng)站功能
- Geocoder:一個幫助我們建立地理感知應用程序的php類庫
- PHPFastCache:強大的開源PHP緩存庫
- PHP Error:解決開發(fā)過程中面臨的PHP錯誤信息
- Snoopy:模擬瀏覽器功能的php類庫
- php socket 發(fā)送郵件的庫
- mysql:分頁php類庫
- 簡單實用的php mysql數(shù)據(jù)庫連接類
- php生成excel文件的類庫
- 相關鏈接:
- 教程說明:
PHP教程-解析用PHP操作MySql數(shù)據(jù)庫(4)
。