knittl करीब था, बाइनरी (16) के बजाय उपयोगकर्ता196009 के रूप में 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 कनेक्शन है)। मैं एक विशेषज्ञ नहीं हूं इसलिए मुझे अभी तक पता नहीं है कि क्या varbinary लंबाई सही है, लेकिन मैंने कैसे कहा, यह मेरे लिए काम करता है।
यह जांचने के लिए कि आपके PHP संस्करण/होस्ट में 'IPv6 समर्थन' सक्षम है या नहीं:
<?php
phpinfo(INFO_GENERAL); // http://php.net/manual/es/function.phpinfo.php
?>