MySQL和PHP中以整型存儲IP地址

正文:將IP地址以整型存儲


   一般我們在資料庫中會用到ip地址用來查記錄的等等,而ip地址是分為四段的,一般是用varchar或char類型存儲。但是其實有更好的存儲方法就是以整型存儲IP地址、因為char和varchar所佔位元組會比int類型要大,例如:char(16),就佔了16個位元組,而使用 int類型的時候只佔了4位元組。假如使用char類型來存儲ip地址那麼當數據達到1億的時候會比使用int類型存儲ip地址要多1.8G的存儲空間、而且查詢速度也會變快、同時也方便比較(between之類的sql語句)。所以在設計數據表結構的時候以int類型存儲IP地址為最佳,且設置符號類型為unsigned的話保證了長度不夠的情況,下面用PHP與SQL展示如何將ip地址互相轉換。

PHP示例:

//你的ip地址 
$user_ip = $_SERVER['REMOTE_ADDR'];
//將獲取到的ip地址轉換為整型以及無符號格式
$save_ip = sprintf('%u',ip2long($userIp));

//轉換整型後的ip地址
echo $save_ip;

//將整型的ip地址轉換為正常ip地址
echo long2ip($save_ip);

SQL示例:

-- 將ip地址轉換為整型
select inet_aton('192.168.1.1');

-- 將整型ip地址轉換為正常ip地址
select inet_ntoa('3232235777');

就到這裡啦,如果覺得部落客寫的還不錯,可以點贊、評論、推薦三連支援下部落客,你的三連就是我最大的動力!

Tags: