我有一個名爲'IP'的表的數據庫。它有2列Id(int11)
和ip(varchar15)
,並與值的行:id 1, ip 127.0.0.1
檢查IP地址是否存儲在數據庫中
現在回到在PHP我有以下幾點:
$ip = $_SERVER['REMOTE_ADDR'];
$query = "SELECT * FROM ip WHERE ip='$ip'";
if(mysql_query($query)) {
echo "Ip is already in database";
}
else {
echo "Ip is not in database";
}
現在我得到的問題是,如果語句仍成真的話,如果我改變IP說:125.0.0.1
我一直試圖修復它2小時,但仍然無法弄清楚我做錯了什麼。
另外,通過將IP地址存儲爲整數,可以使得效率更高。使用MySQL函數[INET_ATON](http://dev.mysql.com/doc/refman/5.0/en/miscellaneous-functions.html#function_inet-aton)和INET_NTOA在地址和整數之間轉換,並使用UNSIGNED INT列爲ip。好處是固定的行大小,更快的索引和更快的查找速度。 –
好吧,我喜歡更快!我會盡力現在就這樣。 – Seltjoek