php ip访问mysql什么配置_PHP与MYSQL配合完成IP的存取
如何存儲IP
程序設計要在功能實現的基礎上最大限度的優化性能。而數據庫設計是程序設計中不可忽略的重要部分,巧存IP地址可以一定程度提升性能。
利用函數算法處理
MySQL沒有直接提供IP類型字段,但有兩個函數可以把IP與最大長度為10位數字類型互轉,所以使用int類型存儲IP比varchar類型存儲IP地址性能要提升很多,更節省存儲空間。varchar是可變長類型,需要多余的一個字節長度。另外int型在邏輯運算上要比varchar速度快。
IP轉數字函數inet_aton()
我們轉換下幾個常用的IP地址
所以IP的表字段可以設置為INT(10)就好,如果IP獲取不到可以直接存0代表獲取不到IP的意思
數字轉IP函數inet_ntoa()
注意,0轉換為 0.0.0.0
*******************華麗分割***********************
以上為原文內容,實際使用中,換了一臺IP地址較大的機器登陸后,發現數據庫中竟存入了一個負值...
環境PHP+MYSQL+32位WIN7
于是查找原因...此處省略3000字
結果如下:
原因:PHP自帶的ip2logng('192.168.1.17'),轉換IP地址后,其值超出了32位系統INT的取值范圍,導致溢出,結果為負
解決方案:將MYSQL存儲IP的字段設置為bigint類型,否則會溢出
存儲IP之前,將ip2long轉換過的值處理為2進制,再處理回10進制,示例:bindec(decbin(ip2long('192.168.1.17'))); //3232235793
至此問題解決,后遺癥暫未發現,發現再糾正...
from:http://www.qttc.net/201208193.html 修正:Faddei
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的php ip访问mysql什么配置_PHP与MYSQL配合完成IP的存取的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 自动从mysql下载文件到powerbi
- 下一篇: mysql group_concat去重