knittl करीब था, के बजाय द्विआधारी (16) user196009 answered के रूप में varbinary (16) एक संबंधित प्रश्न में इस्तेमाल करते हैं। इससे मेरा काम बनता है। कैसे?
संग्रहीत आईपी:
<?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
?>
आईपी प्राप्त कर रहा है:
<?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 कनेक्शन है)। मैं एक विशेषज्ञ नहीं हूं इसलिए मुझे अभी तक पता नहीं है कि क्या विविध लंबाई सही है, लेकिन मैंने कैसे कहा, यह मेरे लिए काम करता है।
आदेश में जांच करने के लिए करता है, तो 'आईपीवी 6 का समर्थन' अपने 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 –