この記事では、適切な形式を使用して IP アドレス データをデータベースに保存し、IP アドレスを簡単に比較する方法を紹介します。 1. IPアドレスをデータベースに保存する IP アドレスはデータベースに保存され、フィールドは通常次のように定義されます。 `ip` char(15) NULLではない、 IP アドレスの最大長 (255.255.255.255) は 15 なので、15 ビットの文字で十分です。 テーブルユーザーの作成 テーブル `user` を作成します ( `id` int(11) 符号なし NOT NULL AUTO_INCREMENT, `name` varchar(30) NOT NULL, `ip` char(15) NULLではない、 主キー (`id`) )ENGINE=InnoDB; データを挿入する `user` (`id`, `name`, `ip`) 値に挿入 (2, 'アビー', '192.168.1.1'), (3、「デイジー」、「172.16.11.66」)、 (4、「クリスティン」、「220.117.131.12」) 2. MySQL inet_aton および inet_ntoa メソッド MySQLはIPアドレスを処理する2つの方法を提供する inet_aton はip を符号なし整数 (4-8 ビット) に変換します。 inet_ntoaは整数IPアドレスをアドレスに変換する データを挿入する前に、char(15) は 16 バイトを占めるため、 inet_atonを使用して IP アドレスを整数に変換し、スペースを節約します。 データを表示するときは、 inet_ntoaを使用して整数 IP アドレスを表示用のアドレスに変換します。 例: テーブル `user` を作成します ( `id` int(11) 符号なし NOT NULL AUTO_INCREMENT, `name` varchar(100) NOT NULL, `ip` int(10) 符号なしNOT NULL、 主キー (`id`) )ENGINE=InnoDB; データを挿入する `user` (`id`, `name`, `ip`) 値に挿入 (2, 'アビー', inet_aton('192.168.1.1')), (3, 'デイジー', inet_aton('172.16.11.66')), (4, 'クリスティン', inet_aton('220.117.131.12')); mysql> `user` から * を選択します。 +----+-----------+------------+ | ID | 名前 | IP | +----+-----------+------------+ | 2 | アビー | 3232235777 | | 3 | デイジー | 2886732610 | | 4 | クリスティン | 3698688780 | +----+-----------+------------+ クエリは電気アドレスとして表示されます mysql> `user` から id、name、inet_ntoa(ip) を ip として選択します。 +----+-----------+----------------+ | ID | 名前 | IP | +----+-----------+----------------+ | 2 | アビー | 192.168.1.1 | | 3 | デイジー | 172.16.11.66 | | 4 | クリスティン | 220.117.131.12 | +----+-----------+----------------+ 3. 比較方法 特定のネットワーク セグメント (例: 172.16.11.1 ~ 172.16.11.100) 内のユーザーを検索する必要がある場合は、PHP の ip2long メソッドを使用して IP アドレスを整数に変換し、比較することができます。 <?php 172.16.11.1 のIPアドレス 172.16.11.100 のIPアドレス echo 'ip2long(ip_start):'.sprintf('%u',ip2long($ip_start)); // 2886732545 echo 'ip2long(ip_end):'.sprintf('%u',ip2long($ip_end)); // 2886732644 ?> クエリ: mysql> select ip,name,inet_ntoa(ip) as ip from `user` where ip>=2886732545 and ip<=2886732644; +------------+-------+---------------+ | ip | 名前 | ip | +------------+-------+---------------+ | 2886732610 | デイジー | 172.16.11.66 | +------------+-------+---------------+ 注: ip2long メソッドを使用して IP アドレスを整数に変換すると、大きな IP に負の数が表示される場合があります。原因と解決方法については、別の記事「 php ip2long における負の数の原因と解決方法の詳細な説明」を参照してください。 4. まとめ 1. unsigned int 形式を使用して IP アドレスをデータベースに保存します。挿入時に、inet_aton メソッドを使用して IP アドレスを unsigned integer に変換し、ストレージ スペースを節約します。 2. 表示時に inet_ntoa を使用して整数 IP アドレスをアドレスに変換します。 3. php ip2long が IP を整数に変換する場合、負の数に注意する必要があります。 上記の MySQL で inet_aton と inet_ntoa を使用して IP アドレス データを処理する例は、エディターが皆さんと共有する内容のすべてです。参考になれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: js でオブジェクトとオブジェクト メソッドを作成するいくつかの方法の詳細な説明
ウェブサーバー1. Webサーバーは、wev、cgi、asp機能を無効にするなど、不要なIISコンポ...
Oracle と MySQL の高可用性ソリューションについては、以前からまとめたいと思っていたので...
4つの実用的なVueカスタム指示1. Vドラッグ要件: マウスドラッグ要素アイデア:要素のオフセット...
静的ウェブサイトをホストできるサーバーは数多くあります。この記事では、nginx、apache、to...
3回の暗記により、大量の資材の正確な場所と目的を記憶でき、その使いやすさが向上します。 これは単なる...
序文データベースでは、一部のデータ テーブルとデータは latin1 であり、一部のデータ テーブル...
目次結論は実践分析拡張機能要約する結論は親コンポーネントでカスタム イベントが定義されている場合、子...
NginxのGeoモジュールの紹介geo ディレクティブは、ngx_http_geo_module ...
el-dialogをコンポーネントとしてカプセル化するelement-ui を使用する場合、ポップア...
この記事の例では、検索ボックスでファジークエリを実装するためのNodeの具体的なコードを参考までに共...
最近、あるプロジェクトに取り組んでいたとき、ページに透かし効果を追加するように依頼されました。さっそ...
NULL 値によると、MySQL の NULL 値は単にデータがないことを意味します。NULL 値は...
目次1. インデックス署名とは何ですか? 2. インデックス署名構文3. インデックス署名に関する注...
1. データ整合性の概要1. データ整合性の概要データの冗長性とは、データベース内に重複したデータが...
目次文字セット比較ルール4つのレベルの文字セットと比較規則3つのシステム変数このノートは主にMySQ...