2010-08-14 3 views
1

데이터베이스의 일부 기본 사용자 통계를 추적하는 페이지를 만들려고합니다. 나는 작은 것으로 시작하고 있는데, 얼마나 많은 사람들이 어떤 사용자 에이전트를 사용했는지 추적하려고 노력하지만, 나는 걸림돌을 발견했습니다. 이미 존재하는지 확인하기 위해 테이블에 추가되는 사용자 에이전트를 어떻게 확인할 수 있습니까?PHP를 사용하여 MySQL 테이블에 추가의 고유성 확인

답변

3

당신은 사용자 에이전트 문자열 unique를 저장하는 열을 만들 수 있으며, 통계 삽입 테이블에 대한

에 대한 중복 키 업데이트에 대한 ... INSERT 않습니다

CREATE TABLE IF NOT EXISTS `user_agent_stats` (
    `user_agent` varchar(255) collate utf8_bin NOT NULL, 
    `hits` int(21) NOT NULL default '1', 
    UNIQUE KEY `user_agent` (`user_agent`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin; 

+------------+--------------+------+-----+---------+-------+ 
| Field  | Type   | Null | Key | Default | Extra | 
+------------+--------------+------+-----+---------+-------+ 
| user_agent | varchar(255) | NO | PRI | NULL |  | 
| hits  | int(21)  | NO |  | NULL |  | 
+------------+--------------+------+-----+---------+-------+ 

당신은을 사용할 수 있습니다 쿼리를 다음은 사용자 에이전트를 삽입 : 여러 번 위의 쿼리를 실행

INSERT INTO user_agent_stats(user_agent) VALUES('user agent string') ON DUPLICATE KEY UPDATE hits = hits+1; 

제공 :

+-------------------+------+ 
| user_agent  | hits | 
+-------------------+------+ 
| user agent string | 6 | 
+-------------------+------+ 
+1

참조 : [색인] (http://dev.mysql.com/doc/refman/5.0/en/create-index.html); [INSERT 구문] (http://dev.mysql.com/doc/refman/5.1/en/insert.html) – NullUserException

+0

와우, SQL은 아름답습니다. – Andy

+0

내 SQL이 아름답다는 것을 의미한다고 생각합니다. 하. 하아. 하아... –

1

데이터베이스에 추가하기 전에 사용자 에이전트 문자열을 삽입하려는 테이블에서 선택하십시오. mysql_num_rows가 0보다 큰 경우 추가하려는 사용자 에이전트가 이미 존재합니다. mysql_num_rows가 0보다 작거나 같으면 새로 추가하는 사용자 에이전트가 사용됩니다.

관련 문제