无法将IP地址放在数据库中

时间:2011-05-11 08:14:40

标签: php mysql ip

我正在尝试在我的数据库中放入一个ip-address。 如果我做这样的回声:

echo $_SERVER['REMOTE_ADDR'];

但是,如果我试图将它放在变量或数据库中,它什么都没有,所以在我的数据库中它说: NULL 我用过的命令:

$ip = $_SERVER['REMOTE_ADDR'];
mysql_query("UPDATE users SET last_ip='".$ip."' WHERE id=".$row['id']) or die(mysql_error());

我不知道我做错了什么。 有人可以帮帮我吗?

谢谢!

2 个答案:

答案 0 :(得分:4)

您需要将last_ip列设为int(10) unsigned,然后将UPDATE更改为:

$SQL = "UPDATE users 
        SET last_ip = INET_ATON('$ip')
        WHERE id='{$row['id']}'";

然后在选择时你会使用:

$SQL = "SELECT INET_NTOA(last_ip) AS last_ip 
        FROM users";

这会将IP地址转换为整数,以实现高效存储。有关详细信息,请参阅INET_ATON()INET_NTOA()的MySQL手册页。

否则,如果您希望将其存储为文本而不是以最有效的方式存储,则可以将last_ip列设置为char(16)并继续使用您发布的UPDATE查询在你的问题中。

答案 1 :(得分:1)

您的代码是正确的,应该可以使用。除非@wallyk评论,否则ip字段的数据类型不受支持。

但是,只是为了确保在'(单引号)中包装WHERE条件并尝试。