mysql
存储 ipv4
或者 ipv6
如果将ip
存储为字符串类型或者数字类型的字段,会对空间造成浪费。
而ipv4
的二进制是4个字节32位,ipv6
的二进制是16个字节128位,所以选择字段类型为varbinary(16)
最为合适。
使用php
的inet_pton
方法将人类可读的 ipv4
或 ipv6
地址转换为适合 32 位或 128 位二进制结构的地址结构体(in_addr
),存入数据库中。
读取的时候可以使用mysql
的hex
方法读出十六进制的字符串,或者直接用php
的inet_ntop
方法还原ip
。