knittl был ближе, а двоичным (16) используют VARBINARY (16) в качестве user196009 answered в связанном с этим вопрос. Меня устраивает. Как?
Запоминание 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
?>
Получение 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
?>
Он должен работать с адресами IPv6 (у меня есть подключение к IPv4). Я не эксперт, поэтому я еще не знаю, если длина varbinary правильная, но как я сказал, это работает для меня.
Для того, чтобы проверить, если 'Поддержка IPv6' включена в вашем PHP версии/хоста:
<?php
phpinfo(INFO_GENERAL); // http://php.net/manual/es/function.phpinfo.php
?>
Отметьте этот вопрос: http://stackoverflow.com/questions/1120371/how-to-convert-ipv6-from-binary-for-storage-in-mysql –