rajutan lebih dekat, daripada binary(16) gunakan varbinary(16) sebagai user196009 dijawab dalam pertanyaan terkait. Ini bekerja untuk saya. Bagaimana?
Menyimpan IP:
<?php
$query = "insert into stats(vis_ip, id_stat) values('" . inet_pton('66.102.7.104') . "', '1')"; // google's IP address
// using a PDO wrapper. http://www.phpclasses.org/package/5206-PHP-Execute-database-queries-from-parameters-using-PDO.html
include_once 'db.php';
$c = new DB();
$visit = $c->getResults($query); // stored as binary
?>
Mengambil IP:
<?php
$query = "SELECT `vis_ip` FROM `stats` WHERE `id_stat`=1";
// PDO wrapper
include_once 'db.php';
$c = new DB();
$stats = $c->getRow($query);
echo inet_ntop($stats->vis_ip); // outputs 66.102.7.104
?>
Ini harus bekerja dengan alamat IPv6 (saya memiliki koneksi IPv4). Saya bukan ahli jadi saya belum tahu apakah panjang varbinary benar, tetapi bagaimana saya mengatakannya, itu berfungsi untuk saya.
Untuk memeriksa apakah 'Dukungan IPv6' diaktifkan di versi/host PHP Anda:
<?php
phpinfo(INFO_GENERAL); // http://php.net/manual/es/function.phpinfo.php
?>