knittl estaba más cerca, en lugar de binario (16) utilizan varbinary (16) como user196009 answered en una pregunta relacionada. Esto funciona para mi. ¿Cómo?
Almacenamiento 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
?>
Recuperando 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
?>
Se debe trabajar con direcciones IPv6 (tengo una conexión IPv4). No soy un experto, así que no sé si la longitud varbinary es correcta, pero como dije, me funciona.
Con el fin de comprobar si 'Soporte IPv6' está habilitado en su versión de PHP/host:
<?php
phpinfo(INFO_GENERAL); // http://php.net/manual/es/function.phpinfo.php
?>
Consulte esta pregunta: http://stackoverflow.com/questions/1120371/how-to-convert-ipv6-from-binary-for-storage-in-mysql –