Es ist eine ziemlich unbekannte Funktion von MySQL, die es erlaubt, IP-Adressen nicht wie üblich als VARCHAR(15), sondern als UNSIGNED INT(10) in der Datenbanktabelle abzuspeichern und natürlich auch wieder zurück in eine IP-Adresse zu verwandeln. Da VARCHAR(15) 16 Bytes verbraucht und der 4-Byte-Long nur 4 Bytes, braucht man damit nur ein Viertel des Speicherplatzes.

Die dazu nötigen MySQL-Funktionen sind INET_ATON() und INET_NTOA(). Wenn Sie den Befehl

SELECT INET_ATON(„127.0.0.1“), INET_NTOA(2130706433)

an MySQL schicken, werden sie als Resultate 2130706433 und 127.0.0.1 zurückbekommen. In dieser rein numerischen Notation lassen sich zum Beispiel bestimmte Ranges von IP-Adressen wesentlich einfacher überprüfen als mit den IP-Adressen:

SELECT `feld` FROM `tabelle` WHERE `ip`< = INET_ATON(‚192.168.254.1‘) AND `ip`> = INET_ATON(‚192.168.254.254‘);

Dieser Befehl zeigt alle gespeicherten IP-Adressen zwischen 192.168.254.1 und 192.168.254.254.

Es gibt auch zwei entsprechende PHP-Funktionen, die genauso funktionieren. Mit ip2long() und long2ip() übernimmt PHP die entsprechende Umwandlung, so dass auch ohne MySQL das wesentlich einfachere Scannen von IP-Ranges möglich ist.