我正在尝试在我的数据库中放入一个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());
我不知道我做错了什么。 有人可以帮帮我吗?
谢谢!
答案 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条件并尝试。