我正在運行一個交友網站,我想知道哪些用戶擁有多個配置文件。mysql - 查找從同一個ip登錄的用戶
我有一個用戶日誌表(用戶標識,IP地址),我想找到所有用戶從同一個IP地址登錄 - 我只想要結果超過1個用戶從相同的IP登錄。
在此先感謝。
我正在運行一個交友網站,我想知道哪些用戶擁有多個配置文件。mysql - 查找從同一個ip登錄的用戶
我有一個用戶日誌表(用戶標識,IP地址),我想找到所有用戶從同一個IP地址登錄 - 我只想要結果超過1個用戶從相同的IP登錄。
在此先感謝。
這聽起來像一個簡單的GROUP BY
與HAVING
所以我會認爲這是你想要什麼:
SELECT "ip address"
FROM userlog
GROUP BY "ip address"
HAVING COUNT(*) > 1
這會給你的用戶的所有IP地址。要獲得實際的用戶:
SELECT "ip address", userid
FROM userlog
WHERE "ip address" IN (
SELECT "ip address"
FROM userlog
GROUP BY "ip address"
HAVING COUNT(*) > 1
)
ORDER BY "ip address"
你好,如果同一個用戶使用相同的IP登錄10次會怎麼樣?這將作爲重複在第一個查詢中返回。 – 2011-04-04 21:07:39
@Sherif Buzz不知道這是否適用於MySQL,但具有COUNT(DISTINCT userid)> 1'可能會給你你想要的... – 2011-04-04 21:44:24
@djacobson:這將工作,但不會很好地擴展(不在MySQL 5.0中無論如何) – Piskvor 2011-04-05 07:22:29
您的查詢會是這個樣子......
$ip = $_SERVER['REMOTE_ADDR'];
$email = mysql_real_escape_string($_POST[email]);
$password = mysql_real_escape_string($_POST[password]);
$qry = "SELECT * FROM accounts WHERE email = '$email' && password = '$password' && ip = '$ip'";
$result = mysql_query($qry);
if(mysql_num_rows($result) == 1) {
//What you want to do if it matches with an already logged ip
}
好運。
如果兩個人一起使用該網站會怎樣? – 2011-04-04 20:32:29
或者如果他們使用移動互聯網(在這種情況下,成千上萬的智能手機用戶可能會共享一個IP)?不要僅僅假設IP。 – Wrikken 2011-04-04 20:39:40
一個典型的_我知道它是壞的,請不要讓我修復它_?因此,我收集關於您可以做什麼不受歡迎的建議?好的,不管它是壞的,這是你的網站,你決定:) – Wrikken 2011-04-04 21:13:56