In diesem Artikel erfahren Sie, wie Sie mithilfe eines geeigneten Formats IP-Adressdaten in der Datenbank speichern und IP-Adressen bequem vergleichen können.
Speichern Sie die IP-Adresse in der Datenbank:
`ip` char(15) NOT NULL,
Da die maximale Länge der IP-Adresse (255.255.255.255) 15 beträgt, ist die Verwendung von 15-Bit-Zeichen ausreichend.
Tabellenbenutzer erstellen
CREATE TABLE `user` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(30) NOT NULL, `ip` char(15) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB;
Mehrere Daten einfügen
INSERT INTO `user` (`id`, `name`, `ip`) VALUES(2, 'Abby', '192.168.1.1'), (3, 'Daisy', '172.16.11.66'), (4, 'Christine', '220.117.131.12');
MySQL bietet zwei Methoden zum Umgang mit IP-Adressen
inet_aton IP in vorzeichenlose Ganzzahl konvertieren Typ (4 -8 Ziffern)
inet_ntoa Ganzzahlige IP in elektrische Adresse umwandeln
Bevor Sie Daten einfügen, verwenden Sie inet_atonKonvertieren Sie die IP-Adresse in eine Ganzzahl, um Platz zu sparen, da char(15) 16 Bytes belegt.
Verwenden Sie beim Anzeigen von Daten inet_ntoa, um die ganzzahlige IP-Adresse zur Anzeige in eine elektrische Adresse umzuwandeln.
Beispiel:
CREATE TABLE `user` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(100) NOT NULL, `ip` int(10) unsigned NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB;
Mehrere Daten einfügen
INSERT INTO `user` (`id`, `name`, `ip`) VALUES(2, 'Abby', inet_aton('192.168.1.1')), (3, 'Daisy', inet_aton('172.16.11.66')), (4, 'Christine', inet_aton('220.117.131.12'));
Die Abfrage wird als E-Mail-Adresse angezeigt
mysql> select * from `user`; +----+-----------+------------+| id | name | ip | +----+-----------+------------+| 2 | Abby | 3232235777 | | 3 | Daisy | 2886732610 || 4 | Christine | 3698688780 | +----+-----------+------------+
Wenn Sie Benutzer in einem bestimmten Netzwerksegment (zum Beispiel: 172.16.11.1 ~ 172.16.11.100) herausfinden müssen, können Sie die ip2long-Methode von PHP verwenden, um die IP-Adresse in eine Ganzzahl umzuwandeln und dann zu vergleichen.
mysql> select id,name,inet_ntoa(ip) as ip from `user`; +----+-----------+----------------+| id | name | ip | +----+-----------+----------------+| 2 | Abby | 192.168.1.1 | | 3 | Daisy | 172.16.11.66 || 4 | Christine | 220.117.131.12 | +----+-----------+----------------+
Abfrage:
<?php$ip_start = '172.16.11.1';$ip_end = '172.16.11.100';echo 'ip2long(ip_start):'.sprintf('%u',ip2long($ip_start)); // 2886732545echo 'ip2long(ip_end):'.sprintf('%u',ip2long($ip_end)); // 2886732644?>
Hinweis: Wenn Sie die ip2long-Methode verwenden, um die IP-Adresse in eine Ganzzahl umzuwandeln, für große Es wird negative Zahlen in der IP geben. Die Gründe und Lösungen finden Sie in meinem anderen Artikel: „Ursachen und Lösungen für negative Zahlen in PHP ip2long“
1. Speichern Sie die IP-Adresse im vorzeichenlosen int-Format in der Datenbank. Verwenden Sie beim Einfügen zunächst die Methode inet_aton, um die IP-Adresse in eine vorzeichenlose Ganzzahl umzuwandeln. 2. Verwenden Sie inet_ntoa, um die ganzzahlige IP-Adresse bei der Anzeige in eine elektrische Adresse umzuwandeln.
3. Bei der Konvertierung von ip2long in ip in einen Integer-Typ müssen Sie auf das Vorkommen negativer Zahlen achten.
Verwandte Inhalte zur Verwendung der GZIP-Komprimierungsausgabe von PHP-JSON-Daten
So verwenden Sie http_build_query über PHP , parse_url, parse_str erstellt und analysiert URL
So implementieren Sie die Shake-Funktion über HTML5
Das obige ist der detaillierte Inhalt vonSo verwenden Sie inet_aton und inet_ntoa, um IP-Adressdaten über MySQL zu verarbeiten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!