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

HTML+jQuery zur Implementierung einer einfachen Anmeldeseite

Inhaltsverzeichnis Einführung Öffentlicher Code (...

Probleme bei der Installation von Python3 und Pip in Ubuntu in Docker

Text 1) Laden Sie das Ubuntu-Image herunter Docke...

Quickjs kapselt JavaScript-Sandbox-Details

Inhaltsverzeichnis 1. Szenario 2. Vereinfachen Si...

Probleme und Lösungen bei der Installation von Docker in der Alibaba Cloud

Frage Bei der Installation von Docker mithilfe de...

Beschreibung des MySQL-Optimierungsparameters query_cache_limit

query_cache_limit query_cache_limit gibt die Puff...

Detaillierte Erläuterung der Wissenspunkte zur asynchronen Programmierung in nodejs

Einführung Weil JavaScript standardmäßig ein Thre...

7 native JS-Fehlertypen, die Sie kennen sollten

Inhaltsverzeichnis Überblick 1. Bereichsfehler 2....

CSS-Tutorial: CSS-Attribut-Medientyp

Eines der wichtigsten Merkmale eines Stylesheets ...