Каков правильный тип поля для IP-адреса в mysql? и каков правильный способ его хранения с помощью PHP?
Этот учебник может вам помочь.
Самый эффективный способ сохранения адресов IPv4 – это поле INT (а не VARCHAR, как вы могли бы ожидать). Вы конвертируете их с помощью ip2long
и обратно PHP, используя либо функцию INET_NTOA
MySQL, INET_NTOA
функцию INET_NTOA
PHP.
Если вам нужно сохранить IPv6, вам нужно вместо этого использовать поле BINARY и функцию inet_pton
PHP.
вы можете сохранить их в двоичном поле длиной 128 бит (16 байтов, BINARY(16)
или VARBINARY(16)
). для преобразования любого IP-адреса в его двоичное представление, вы можете использовать php-функцию inet_pton
. этот метод будет работать как для адресов IPv4, так и для IPv6. inet_ntop
может использоваться для возврата строкового представления сохраненного ip-адреса (независимо от версии)
Как правило, вы можете пойти с VARCHAR (45), поскольку он будет достаточно длинным, чтобы даже хранить IPv6.