Сохранение IP-адреса в базе данных MySQL с использованием PHP

Каков правильный тип поля для 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.