无法将 IP 地址放入数据库

发布于 2024-11-06 13:06:25 字数 373 浏览 3 评论 0原文

我正在尝试将 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

じ违心 2024-11-13 13:06:25

您需要将 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 地址转换为整数以便高效存储。有关详细信息,请参阅 MySQL 手册页 <代码>INET_ATON()INET_NTOA()

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

You will want to make your last_ip column an int(10) unsigned and then change your UPDATE to be:

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

Then when selecting you would use:

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

This converts the IP address into an integer for efficient storage. For more information please see the MySQL manual pages for INET_ATON() and INET_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 be char(16) and continue to use the UPDATE query you posted in your question.

我们只是彼此的过ke 2024-11-13 13:06:25

您的代码是正确的并且应该可以工作。除非@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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文