2012-08-10 2 views
0

방문자의 IP 주소를 기록하고이를 mysql 데이터베이스에 저장합니다. 방문자가 다른 IP를 얻으면 레코드를 업데이트합니다. 다음 코드를 사용하여 업데이트를 수행하고 다음 예제의 값은 테스트 용입니다.필드에 하위 값이없는 경우 업데이트

insert into visiter_info values ('1344594088179','0','100.100.100.100','china','300x600','IOS','firefox','') 
        ON DUPLICATE KEY UPDATE 
        ip_address=concat(ip_address,'|','100.100.100.100'), 
        location=concat(location,'|','china'), 
        screen_res=concat(screen_res,'|','300x600'), 
        os=concat(os,'|','IOS'), 
        brower=concat(brower,'|','firefox') 

이제는 문제가 발생하지만 데이터베이스에 레코드가 있는지 어떻게 확인할 수 있습니까? 이렇게 : 방문객이 100.100.100.100으로 다시 온다. MySQL은 레코드가 있다는 것을 모르고 다시 레코드합니다. insert하기 전에 if에 하위 문자열이 있는지 확인하는 방법은 무엇입니까?

+1

테이블에 'PRIMARY KEY'및 'UNIQUE'인 열이 있습니까? – Omesh

+0

쉼표로 구분 된 열 (또는'|'- 분리 된 열)을 사용하고있는 것 같습니다. 이것은 좋지 않다. 하나가 아닌 모든 필드에 하나의 정보 가치를 저장하십시오. –

답변

0
if not exists(select * from visiter_info where ip_address='100.100.100.100') 
    insert into visiter_info values ('1344594088179','0','100.100.100.100','china','300x600','IOS','firefox','') 
ON DUPLICATE KEY UPDATE 
     ip_address=concat(ip_address,'|','100.100.100.100'), 
     location=concat(location,'|','china'), 
     screen_res=concat(screen_res,'|','300x600'), 
     os=concat(os,'|','IOS'), 
     brower=concat(brower,'|','firefox') 
관련 문제