0

我在 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没有被插入。这是一个空白字段。这是为什么?

4

1 回答 1

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 中看不到值

于 2013-01-09T04:26:12.490 回答