PHP는 지정된 필드를 인덱스로 하여 데이터베이스에서 가져온 데이터 그룹을 반환합니다.

4115 단어 필드색인수조
많은 상황에서 우리는 새로운 프로젝트를 접하고 개발이 끝난 후에 고개를 돌려 자신이 쓴 코드를 자세히 훑어보았는데 대부분이 우리가 이전에 숙련된 코드를 사용했다.그래서 모든 새로운 프로젝트를 완성할 때 프로젝트 총결, 코드 총결을 적당히 하면 나중에 프로젝트에서 사용할 수 있고 의외의 수확을 얻을 수 있다. 예를 들어 코드 최적화, 더 좋고 속도가 빠른 실현 방법 등이 생각난다.우박의 프로그램 개발자는 때때로 코드 양의 많고 적음이 아니라 프로그램의 코드 간결성, 논리적 복잡성, 그러나 실현의 편리성 등이 좋은 프로그래머인지 아닌지를 설명한다.우리는 밤낮으로 야근을 하지 않고 심야까지 코드를 맞추는 프로그래머를 한다.이 편은 여러분과 몇 가지 사용된 PHP 프로그래밍 기교를 공유합니다. 어떤 기교는 다른 사람의 코드를 볼 때 배운 것이고, 어떤 기교는 스스로 정리한 것입니다.특정 필드를 인덱스로 하고 데이터베이스에서 찾은 데이터 그룹을 되돌려주는 것은 예를 들면 쉽다. 만약에 지정한 사이트가 다른 사이트에서 온 데이터 상황을 통계하고 백그라운드를 만들어서 모든 사이트가 매일 가져오는 데이터 상황을 보려면.우리는 먼저 두 장의 데이터 테이블을 세운다. 테이블 1, 사이트 설정표(이 사이트의 데이터만 집계한다)
 
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 총결: 이렇게 많이 쓰면 그런 작은 기교를 설명할 것 같지만, 절대 이 기교를 얕보지 마세요. 많은 시간을 절약할 수 있어요.그래서 여러분이 코드를 쓸 때 많이 정리하고 블로그원에 많이 와서 여러분과 교류하고 공부하면 프로그래밍 수준이 반드시 빨리 발전할 것입니다!

좋은 웹페이지 즐겨찾기