PHP içinde bu ile uğraşmak zorunda olmamalıdır, bu MySQL yerli funcions için var. Bu örneğe bakın:
create table iptable (
ip int(32) unsigned not null,
comment varchar(32) not null
);
insert into iptable (ip, comment) values (inet_aton('10.0.0.3'), 'This is 10.0.0.3');
select * from iptable;
+-----------+------------------+
| ip | comment |
+-----------+------------------+
| 167772163 | This is 10.0.0.3 |
+-----------+------------------+
select inet_ntoa(ip) as ip, comment from iptable;
+----------+------------------+
| ip | comment |
+----------+------------------+
| 10.0.0.3 | This is 10.0.0.3 |
+----------+------------------+
Eğer aynı alanda IPv4 hem de IPv6 ile başa çıkmak için, ve Mysql 5.6 veya üstü kullanıyorsanız istiyorsanız, varbinary (16) kullanabilir ve işlevleri inet6_aton ve inet6_ntoa. Bu PHP içinde ikili veri ile başa MySQL fonksiyonları kullanmak ve olmamalıdır neden daha iyi bir örnektir:
create table iptable2 (
ip varbinary(16) not null,
comment varchar(32) not null
);
insert into iptable2 (ip, comment) values
(inet6_aton('192.168.1.254'), 'This is router 192.168.1.254'),
(inet6_aton('::1'), 'This is ipv6 localhost ::1'),
(inet6_aton('FE80:0000:0000:0000:0202:B3FF:FE1E:8329'), 'This is some large ipv6 example')
;
select * from iptable2;
+------------------+---------------------------------+
| ip | comment |
+------------------+---------------------------------+
| +¿?¦ | This is router 192.168.1.254 |
| ? | This is ipv6 localhost ::1 |
| ¦Ç ??¦ ¦?â) | This is some large ipv6 example |
+------------------+---------------------------------+
select inet6_ntoa(ip) as ip, comment from iptable2;
+--------------------------+---------------------------------+
| ip | comment |
+--------------------------+---------------------------------+
| 192.168.1.254 | This is router 192.168.1.254 |
| ::1 | This is ipv6 localhost ::1 |
| fe80::202:b3ff:fe1e:8329 | This is some large ipv6 example |
+--------------------------+---------------------------------+
Bunu yaparak, aslında MySQL onları geri simpliest ifade için ikili ve dönüştürür beri, farklı biçimlerde IPv6 adreslerini değerlendirmek zorunda önleyebilirsiniz görebilirsiniz.
Bu soru zaten daha 2 yıl var biliyorum, ama bu bilgiler rastlamak başkaları için yararlı olsun istiyorum.
HTH
Francisco Zarabozo