MySQL verwendet inet_aton und inet_ntoa, um IP-Adressdaten zu verarbeiten

MySQL verwendet inet_aton und inet_ntoa, um IP-Adressdaten zu verarbeiten

Dieser Artikel stellt vor, wie Sie IP-Adressdaten in einem geeigneten Format in einer Datenbank speichern und IP-Adressen einfach vergleichen.

1. Speichern Sie die IP-Adresse in der Datenbank

Die IP-Adresse wird in der Datenbank gespeichert und das Feld wird im Allgemeinen wie folgt definiert:

`ip` char(15) NICHT NULL,

Da die maximale Länge einer IP-Adresse (255.255.255.255) 15 beträgt, ist ein 15-Bit-Zeichen ausreichend.

Tabellenbenutzer erstellen

CREATE TABLE `Benutzer` (
 `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
 `name` varchar(30) NICHT NULL,
 `ip` char(15) NICHT NULL,
 PRIMÄRSCHLÜSSEL (`id`)
)ENGINE=InnoDB;

Fügen Sie einige Daten ein

INSERT INTO `Benutzer` (`id`, `name`, `ip`) WERTE
(2, 'Abby', '192.168.1.1'),
(3, 'Daisy', '172.16.11.66'),
(4, 'Christine', '220.117.131.12');

2. MySQL inet_aton- und inet_ntoa-Methoden

MySQL bietet zwei Methoden zum Umgang mit IP-Adressen

inet_aton konvertiert IP in vorzeichenlose Ganzzahlen (4-8 Bit)

inet_ntoa konvertiert die ganzzahlige IP-Adresse in eine Adresse

Bevor Sie die Daten einfügen, wandeln Sie die IP-Adresse mit inet_aton in eine Ganzzahl um, um Platz zu sparen, da char(15) 16 Bytes belegt.

Verwenden Sie beim Anzeigen von Daten inet_ntoa , um die ganzzahlige IP-Adresse in eine Adresse zur Anzeige umzuwandeln.

Beispiel:

CREATE TABLE `Benutzer` (
 `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
 `name` varchar(100) NICHT NULL,
 `ip` int(10) unsigned NICHT NULL,
 PRIMÄRSCHLÜSSEL (`id`)
)ENGINE=InnoDB;

Fügen Sie einige Daten ein

INSERT INTO `Benutzer` (`id`, `name`, `ip`) WERTE
(2, 'Abby', inet_aton('192.168.1.1')),
(3, 'Daisy', inet_aton('172.16.11.66')),
(4, 'Christine', inet_aton('220.117.131.12'));

mysql> wähle * von „Benutzer“;
+----+-----------+------------+
| ID | Name | IP |
+----+-----------+------------+
| 2 | Abby | 3232235777 |
| 3 | Gänseblümchen | 2886732610 |
| 4 | Christine | 3698688780 |
+----+-----------+------------+

Die Abfrage wird als elektrische Adresse angezeigt

mysql> wähle ID, Name, inet_ntoa(IP) als IP von „Benutzer“;
+----+-----------+----------------+
| ID | Name | IP |
+----+-----------+----------------+
| 2 | Abby | 192.168.1.1 |
| 3 | Gänseblümchen | 172.16.11.66 |
| 4 | Christine | 220.117.131.12 |
+----+-----------+----------------+

3. Vergleichsmethode

Wenn Sie Benutzer in einem bestimmten Netzwerksegment suchen müssen (z. B. 172.16.11.1 ~ 172.16.11.100), können Sie die IP-Adresse mit der ip2long-Methode von PHP in eine Ganzzahl umwandeln und dann vergleichen.

<?php
$ip_start = "172.16.11.1";
$ip_end = "172.16.11.100";

echo 'ip2long(ip_start):'.sprintf('%u',ip2long($ip_start)); // 2886732545
echo 'ip2long(ip_end):'.sprintf('%u',ip2long($ip_end)); // 2886732644
?>

Abfrage:

mysql> wähle ip,name,inet_ntoa(ip) als IP von „Benutzer“, wobei ip>=2886732545 und ip<=2886732644;
+------------+-------+---------------+
| IP-Adresse | Name | IP-Adresse |
+------------+-------+---------------+
| 2886732610 | Gänseblümchen | 172.16.11.66 |
+------------+-------+---------------+

Hinweis: Wenn Sie die IP-Adresse mit der Methode ip2long in eine Ganzzahl umwandeln, kann bei einer großen IP eine negative Zahl erscheinen. Informationen zu Ursache und Lösung finden Sie in meinem anderen Artikel: „ Detaillierte Erörterung der Ursache und Lösung negativer Zahlen in php ip2long

4. Zusammenfassung

1. Speichern Sie die IP-Adresse im vorzeichenlosen int-Format in der Datenbank. Verwenden Sie beim Einfügen die Methode inet_aton, um die IP-Adresse in eine vorzeichenlose Ganzzahl umzuwandeln und so Speicherplatz zu sparen.

2. Verwenden Sie inet_ntoa, um die ganzzahlige IP-Adresse bei der Anzeige in eine Adresse umzuwandeln.

3. Wenn php ip2long IP in eine Ganzzahl umwandelt, müssen Sie auf negative Zahlen achten.

Das obige Beispiel von MySQL, das inet_aton und inet_ntoa zur Verarbeitung von IP-Adressdaten verwendet, ist der gesamte Inhalt, den der Editor mit Ihnen teilt. Ich hoffe, es kann Ihnen als Referenz dienen. Ich hoffe auch, dass Sie 123WORDPRESS.COM unterstützen werden.

Das könnte Sie auch interessieren:
  • So speichern Sie IP-Adressen in MySQL
  • Beispiel für MySQL-Datenbank-übergreifende Tabellenreplikation (unter derselben IP-Adresse)
  • PHP-Methode, Asp-Methode, MsSQL-Methode, MySQL-Methode zum Konvertieren der IP-Adresse in eine Ganzzahl
  • So verwenden Sie die MySQL-Funktionen inet_aton() und inet_ntoa() zum Speichern von IP-Adressen
  • So greifen Sie über die IP-Adresse auf MySql zu

<<:  Detaillierte Erläuterung verschiedener Möglichkeiten zum Erstellen von Objekten und Objektmethoden in js

>>:  Einführung in die Linux-Dateikomprimierung und -Verpackung

Artikel empfehlen

Was tun, wenn Sie Ihr MySQL-Passwort vergessen?

Lösung zum Vergessen des MySQL-Passworts: [root@l...

So ändern Sie das Standardnetzwerksegment der Docker0-Brücke in Docker

1. Hintergrund Wenn der Docker-Dienst gestartet w...

Kombinieren von XML- und CSS-Stilen

student.xml <?xml version="1.0" enco...

Details zur MySQL-Sortierfunktion

Inhaltsverzeichnis 1. Problemszenario 2. Ursachen...

CSS-Beispielcode zum Zeichnen eines Lutschers

Hintergrund: Machen Sie jeden Tag ein wenig Forts...

Natives JS zum Erreichen von Spezialeffekt-Meldungsfeldern

In diesem Artikel wird ein Nachrichtenfeld mit Sp...

JS-Implementierung des Karussell-Karussell-Falls

In diesem Artikelbeispiel wird der spezifische JS...

Detaillierte Erklärung, wo das von Docker abgerufene Image gespeichert ist

20200804Nachtrag: Der Artikel könnte falsch sein....