Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 无法将IP地址放入数据库中_Php_Mysql_Ip - Fatal编程技术网

Php 无法将IP地址放入数据库中

Php 无法将IP地址放入数据库中,php,mysql,ip,Php,Mysql,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()); 我不知道我做

我正试图在我的数据库中输入一个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());
我不知道我做错了什么。 有人能帮我吗


谢谢

您的代码是正确的,应该可以正常工作。除非@wallyk注释,否则ip字段的数据类型不受支持


但是,为了确保将WHERE条件包装在“单引号”中,然后重试。

您需要将最后一列设置为int10未签名,然后将更新更改为:

然后选择时,您将使用:

$SQL = "SELECT INET_NTOA(last_ip) AS last_ip 
        FROM users";
这会将IP地址转换为整数以实现高效存储。有关更多信息,请参阅和的MySQL手册页面


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

last_ip的数据类型是什么?转储$sql的值-您应该能够判断$ip是否为空或sql语句是否正确格式化。然后您可以将sql语句直接粘贴到mysql中并查找错误。该值为空且保持为空,非常奇怪。请将解析后的查询显示一次。其中id='。$row['id']。'Hey!谢谢你的回复。我尝试了您的SQL语句,并更改了数据库中的类型,但仍然没有在数据库中放入任何内容。真奇怪。。应该是服务器错误吗?编辑:即使我将其更改为CHAR16,它也不起作用。如果您var_dump$ip;在mysql_查询之前,你得到了什么?还是什么都没有。我也问过这里的一些人,没有人知道。应该是这样的。我不明白..好吧,代码中还有问题。听起来好像变量$ip在某个地方被覆盖了。var_dump$ip和$_SERVER['REMOTE_ADDR']来验证它们所携带的数据。我尝试了var_dump,但不知何故,$ip变量中仍然没有值。。奇怪的是,我可以做回显并打印ip地址,但当我打印$ip变量时,它会说它是空的。。
$SQL = "SELECT INET_NTOA(last_ip) AS last_ip 
        FROM users";