无法将 IP 地址放入数据库
我正在尝试将 IP 地址放入我的数据库中。 如果我做这样的回显:
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());
我不知道我做错了什么。 有人可以帮我解决这个问题吗?
谢谢!
I'm trying to put an ip-address in my database.
If I do an echo like this:
echo $_SERVER['REMOTE_ADDR'];
But if I'm trying to put it in a variable or in the database it gives nothing, so in my database it says: NULL
The commands I used for that:
$ip = $_SERVER['REMOTE_ADDR'];
mysql_query("UPDATE users SET last_ip='".$ip."' WHERE id=".$row['id']) or die(mysql_error());
I don't know what I'm doing wrong.
Can someone help me with this please?
Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您需要将
last_ip
列设置为int(10) unsigned
,然后将UPDATE
更改为:然后在选择时您将使用:
这会将 IP 地址转换为整数以便高效存储。有关详细信息,请参阅 MySQL 手册页 <代码>INET_ATON()和
INET_NTOA()
。否则,如果您希望将其存储为文本而不是以最有效的方式存储,您可以将
last_ip
列设置为char(16)
并继续使用更新
您在问题中发布的查询。You will want to make your
last_ip
column anint(10) unsigned
and then change yourUPDATE
to be:Then when selecting you would use:
This converts the IP address into an integer for efficient storage. For more information please see the MySQL manual pages for
INET_ATON()
andINET_NTOA()
.Otherwise if you want it to be stored as text rather than in the most efficient way you can set your
last_ip
column to bechar(16)
and continue to use theUPDATE
query you posted in your question.您的代码是正确的并且应该可以工作。除非@wallyk 评论,否则 ip 字段的数据类型是不受支持的。
但是,只是为了确保将 WHERE 条件包装在
'
(单引号)中并尝试。Your code is correct and should work. Unless as commented by @wallyk, the data type of the ip field is unsupported one.
However, just to make sure wrap the WHERE condition in
'
(Single Quote) and try.