mysql数据库中的我的ip字段是VARBINARY(16)
// Insert into website table
$ip = inet_pton('::1'); // Local ip
$data_rec = array(
'ip_address' => $ip,
);
$this->db->insert('visitors', $data_rec);
ip没有插入。这是一片空白的领域。那是为什么?
答案 0 :(得分:3)
inet_pton()
会返回不可打印的字符
您是否尝试从数据库中读取它并执行echo inet_topn()
?
鉴于我有一张桌子
CREATE TABLE `ip` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`ip` varbinary(16) DEFAULT NULL,
PRIMARY KEY (`id`)
)
使用这个简单的脚本(为简单起见,故意省略所有检查)
<?php
$in6_addr = inet_pton('::1');
$db = new mysqli('localhost', '******', '******', 'test');
$qry = "INSERT INTO ip (ip) VALUES('$in6_addr')";
$db->query($qry));
$qry = "SELECT * FROM ip WHERE id=1";
$result = $db->query($qry);
if ($row = $result->fetch_array(MYSQL_ASSOC)) {
echo inet_ntop($row['ip']);
}
?>
你得到了输出
::1
但你无法在phpAdmin或Sequel Pro中看到这个值