Сервер: Хранение IP-адресов в MySQL и обработка в php

Для хранения IP-адресов в MySQL наиболее подходящим типом данных является тип VARBINARY(16), который представляет IP-адрес как 16-байтовое двоичное значение. VARBINARY - это тип данных в MySQL, который используется для хранения двоичных данных переменной длины.

Поиск IP-адреса по точному значению:

# функция INET6_NTOA() преобразует значение столбца ip из двоичного формата в текстовый формат
SELECT 
	* 
FROM 
	`table` 
WHERE 	
	INET6_NTOA( `ip` ) = '192.168.1.1'	

# обратный подход, когда мы преобразуем ip адрес функцией INET6_ATON 
# и сравниваем с сохранённым значением
SELECT
    *
FROM
    `tabke`
WHERE
    `ip` = INET6_ATON( '192.168.1.1' ) 

Поиск IP-адресов, начинающихся с заданного префикса:

SELECT 
	* 
FROM 
	`table` 
WHERE 
	INET6_NTOA( `ip` ) LIKE '192.168.1.%'

Независимо от выбранного типа данных, вам также может потребоваться преобразовать IP-адрес в двоичное значение перед сохранением его в базу данных, а затем преобразовать обратно в строковый формат при извлечении данных из базы данных. Для этого в PHP существуют специальные функции, такие как inet_pton() и inet_ntop().

# Пример использования inet_pton() для преобразования IP-адреса в двоичное представление
$ip = '192.168.0.1';
$binIp = inet_pton( $ip );
echo bin2hex( $binIp ); 
// > c0a80001

# Пример использования inet_ntop() для преобразования двоичного представления IP-адреса в строку
$binIp = hex2bin( 'c0a80001' );
$ip = inet_ntop( $binIp );
echo $ip;
// > 192.168.0.1
Сервер PHP MySQL 1.6 г. Просмотров: 835
Оценить код:

Комментарии

Ваш комментарий будет первым.
Войдите, чтобы оставить комментарий.