天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

PHP以指定字段為索引返回數據庫所取的數據數組

很多情況下,我們從接觸一個新的項目到開發完成,再回過頭來仔細瀏覽一下自己寫的代碼,很多都是我們以前用熟練的代碼。所以,在完成每個新項目的時 候,適當的做些項目總結、代碼總結,或許你會在以后的項目中用得著,極有可能獲得意外的收獲,比如:代碼優化,想到了更好、速度更快的實現方法等等。

牛逼的程序開發者有時候不在于代碼量的多少,而是程序的代碼簡潔性、邏輯復雜但實現的方便性,這些才說明是否是一位好的程序員。我們不做日夜加班到深夜,拼代碼量的程序員!
這篇和大家分享幾個使用得php編程技巧,有些技巧是在看別人代碼的時候學來的,有些是自己總結的。

以特定字段為索引,返回數據庫取的數據數組
舉個例子容易些:
假如你要統計指定站點從其它網站來的流量情況,并且做一個小后臺,查看每個網站每天帶來的流量情況。我們先建2張數據表:
表一、站點配置表(只統計這些網站的流量)
復制代碼 代碼如下:
CREATE TABLE `site_config` (
`id` smallint(5) unsigned NOT NULL auto_increment COMMENT '主鍵,自增',
`sid` smallint(5) unsigned NOT NULL COMMENT '網站ID',
`site_url` varchar(128) NOT NULL COMMENT '網站URL地址',
`site_name` varchar(80) NOT NULL COMMENT '網站名稱',
`add_time` timestamp NOT NULL default CURRENT_TIMESTAMP COMMENT '添加時間',
PRIMARY KEY (`id`),
UNIQUE KEY `adid` (`sid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='站點配置表';

表二、站點流量統計表(來一個用戶一條記錄)
復制代碼 代碼如下:
CREATE TABLE `site_stat` (
`id` int(11) unsigned NOT NULL auto_increment COMMENT '主鍵,自增',
`sid` smallint(5) unsigned NOT NULL COMMENT '網站ID',
`ip_address` varchar(32) NOT NULL COMMENT '用戶IP',
`add_time` timestamp NOT NULL default CURRENT_TIMESTAMP COMMENT '添加時間',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='站點流量統計表' ;

因為site_config表讀操作大于寫操作,所以類型設置為MyISAM;而site_stat表寫操作大于讀操作,因此,我把表類型設置為InnoDB。(這些地方也是你在設計數據的時候需要考慮的,速度提高不少)。
回到正題,假如表site_config里有這樣幾條數據:
數據格式為:id,sid,site_url,add_time
1,200,baidu.com,2013-06-30 14:20:00
2,201,google.com,2013-06-30 14:20:00
3,202,cnblogs.com,2013-06-30 14:20:00
4,203,codejia.NET,2013-06-30 14:20:00
站點流量統計表site_stat里已經產生了一些數據,如下:
數據格式為:id,sid,ip_address,add_time
1,200,167.87.32.4,2013-06-30 14:40:00
2,200,192.168.11.56,2013-06-30 14:40:10
3,202,167.87.32.4,2013-06-30 14:40:10
4,202,192.168.11.56,2013-06-30 14:40:20
5,203,167.87.32.4,2013-06-30 14:40:20
6,202,10.10.10.10,2013-06-30 14:40:30
7,200,167.87.32.4,2013-06-30 14:40:31
你在后臺需要做的報表格式為:日期,網站ID,網站URL,流量數 (沒有流量的站點也要展示,流量顯示為0)
你可能會想到根據日期,在表site_stat里根據sid group by之后再left join表site_config,這顯然不是我將分享的方法。
用2條SQL來搞定,一條是取所有的站點;另一條是取指定日期下站點流量統計數。

SQL1取所有站點:
復制代碼 代碼如下:
SELECT sid,site_url,site_name FROM site_config

SQL2取站點統計(假如為今天):
復制代碼 代碼如下:
SELECT sid,COUNT(1) AS come_total FROM site_stat
WHERE add_time>='2013-06-30 00:00:00'
AND add_time<='2013-06-30 23:59:59'
GROUP BY sid

前面說了一大堆都是為后面做鋪墊,分享一個php以傳過去的字段為索引,返回二維數組的方法:
復制代碼 代碼如下:
protected function getList($sql,$filed = null){
$res = mysql_query($sql,$this->link_sc);
$data = array();
if($filed === null){
while($row = mysql_fetch_assoc($res)){
$data[] = $row;
}
}else{
while($row = mysql_fetch_assoc($res)){
$data[$row[$filed]] = $row;
}
}
return $data;
}

把你的SQL傳進入,并把需要索引的字段傳進入就OK,前提是傳進去的字段必須要在select返回的字段里。
我們在取所有站點的時候不需要傳過去字段,但在取站點流量統計的時候我們把,站點sid傳過去,即如下:
復制代碼 代碼如下:
$sites = getList($sql1); //所有站點
$data = getList($sql2,'sid'); //站點流量數據,以sid為索引返回二維數組

最后在展示報表的時候,用foreach循環$sites,取流量的時候到數組$data里去取索引為sid的數據就OK了。
非常方便,并且非常容易掌握,我就經常這么干。

最后看下上表的統計結果報表:
格式為:日期,網站ID,網站URL,流量數
2013-06-30,200,baidu.com,3
2013-06-30,201,google.com,0
2013-06-30,202,cnblogs.com,3
2013-06-30,203,codejia.NET,1
總結:貌似寫這么多就說明那樣一個小的技巧哈,但是,可千萬別小看這個技巧,能節約你很多時間。所以,大家在寫代碼的時候多多總結,多多來博客園和大家交流、學習,編程水平一定會進步很快的!

php技術PHP以指定字段為索引返回數據庫所取的數據數組,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 世界上第一个得抑郁症的人是谁 | 亚洲日韩在线天堂一 | 在线观看日本污污ww网站 | 动漫美女性侵 | 亚洲色综合中文字幕在线 | 色WWW永久免费视频首页 | 久久热免费视频 | 国产成人无码区免费内射一片色欲 | 国产电影一区二区三区 | 野花日本免费完整版高清版动漫 | 免费国产久久拍久久爱 | 色综合久久中文色婷婷 | 久久99国产综合精品AV蜜桃 | QVOD理论| 国产一区在线观看免费 | 欧亚一卡二卡日本一卡二卡 | 开心色99xxxx开心色 | 黄色亚洲片 | 亚洲 中文 自拍 无码 | 亚洲视频无码高清在线 | 国精产品999一区二区三区有限 | 精品一区二区三区四区五区六区 | 国产成人在线免费观看 | 中国xxx视频| 大陆老熟女60岁 | 永久免费精品精品永久-夜色 | 含羞草传媒在线观看 | 国产精品一区二区制服丝袜 | brazzers巨臀系列 | 蜜臀AV熟女人妻中文字幕 | 俄罗斯搜索引擎Yandex推广入口 | 高傲教师麻麻被同学调教123 | 狠狠久久免费视频在线 | 后入式啪gif动态图 后入式狂顶免费视频 | 51vv视频社区| 国产高清美女一级a毛片久久w | 久久AAAA片一区二区 | 日韩欧美精品有码在线播放免费 | 国产成人拍精品免费视频爱情岛 | 欧美一区二区VA毛片视频 | 丹麦1o一19sex性hdhd|