2012-08-03 42 views
1

我有一個2列的MySQL表,第一個是IP地址,第二個是應該遞增的整數。當代碼存在時遞增值

當一個新的IP訪問該網站時,與該IP相對應的整數應該加1. PHP腳本也應該處理IP地址已經存在於數據庫中的情況。

這是用於更新整數

UPDATE user SET points = points + 1 WHERE code = '$u' 

這是添加新的IP到數據庫中(我用的是屬性「獨特的」,沒有雙值可以保存):

現在我想只有當新的IP訪問網站時,整數纔會加1。如果我可以減少兩個查詢並在1個查詢中完成工作,那將是非常好的。感謝您的任何幫助。

+0

您第一檢查如果IP內的存在表。如果不是,你插入。如果是這樣,你更新。 – 2012-08-03 17:07:59

+0

使用php來檢查IP是否存在並更新計數。 – tkt986 2012-08-03 17:09:13

+0

http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html – Knarf 2012-08-03 17:11:55

回答

1

INSERT INTO $DB_Table (ip,code) values(INET_ATON('$ip'),'$code') ON DUPLICATE KEY UPDATE user SET points = points + 1 WHERE code = '$u'

在MySQL表具有points DEFAULT = 1

+0

謝謝!正是我需要的:) – ph3nx 2012-08-16 14:00:04

1

是的,你可以使用類似這樣

INSERT INTO table (ip, code, points) values ('ip value', 'code value', 1) ON DUPLICATE KEY UPDATE points = points + 1 WHERE ip = 'ip value'; 

請注意,您將需要IP的主鍵或唯一索引這個工作。我不確定'code'值代表什麼,所以如果update子句也是一個唯一鍵,它實際上可能會有問題。

請注意,我爲insert子句中的點添加了初始值1。

1

可以兩種通過使用INSERT ... ON DUPLICATE KEY方法合併在一起:

INSERT INTO visitors (ip, code, counter) VALUES (INET_ATON($ip), '$code', 1) ON DUPLICATE KEY UPDATE counter = counter + 1;