2012-08-10 65 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') 

它的工作原理,但現在問題來了,我該如何檢查數據庫中是否有記錄?像這樣:訪客再次來到,IP爲100.100.100.100。 Mysql不知道有一條記錄,它會重新記錄。如何檢查在插入前是否包含子字符串?

+1

哪列是你的表中的'PRIMARY KEY'和'UNIQUE'? – Omesh 2012-08-10 11:18:46

+0

看來你正在使用逗號分隔的列(或更確切地說是'|'分隔的列)。不是很好。在每個領域存儲一個信息值,並不是很多。 – 2012-08-10 13:52:27

回答

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') 
相關問題