PHP는 지정된 필드를 인덱스로 하여 데이터베이스에서 가져온 데이터 그룹을 반환합니다.
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=' ';
표2. 사이트 데이터 통계표
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=' ' ;
사이트 때문에_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 1200167.87.32.4 2013-06-30 14:40:00 2200192.168.11.5 62013-06-30 14:40 320 2167.87.3 2.4 2013-06-30 14:40 4202 192.1 65 62013-06-30 14:40 520 3167.87.3 2.4 2013-06-30 14:40:30 14:40:20 6202, 10.10 10.10 2013-06-30 14:40:30 72001 67.87.3 2.4 2013-06-30 14:40:31 당신이 백스테이지에서 해야 할 보고서 양식은 날짜, 사이트 ID, 사이트 URL,데이터 수(데이터가 없는 사이트도 보여주고 데이터는 0으로 표시) 날짜에 따라 표site_stat에서sid그룹by에 따라 왼쪽으로 조인표site_config, 이것은 분명히 내가 공유할 방법이 아니다.두 개의 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를 공유하여 전달된 필드를 인덱스로 하고 2차원 그룹으로 돌아가는 방법:
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를 순환하고 데이터를 찾을 때 수조 $데이터에서 색인된sid의 데이터를 찾으면 됩니다.매우 편리하고 파악하기 쉬워서 나는 자주 이렇게 한다.마지막으로 아래 표의 통계 결과 보고서를 보십시오: 형식: 날짜, 사이트 ID, 사이트 URL, 데이터 수 2013-06-30200,baidu.com,3 2013-06-30,201,google.com,0 2013-06-30,202,cnblogs.com,3 2013-06-30,203,codejia.net, 1 총결: 이렇게 많이 쓰면 그런 작은 기교를 설명할 것 같지만, 절대 이 기교를 얕보지 마세요. 많은 시간을 절약할 수 있어요.그래서 여러분이 코드를 쓸 때 많이 정리하고 블로그원에 많이 와서 여러분과 교류하고 공부하면 프로그래밍 수준이 반드시 빨리 발전할 것입니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
mongoDB에서 투영을 사용하여'추가'필드를 제거하는 작업 과정실제 개발 과정에서 개발자의 포지셔닝 문제에 편리하도록 여러 개의 추가 필드가 존재한다.예를 들어createdAt, updatedAt 필드를 추가하여 데이터의 생성과 변경 시간을 확인합니다.클라이언트에게는 존재를 알...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.