Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.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 如何将服务器$作为id存储在数据库中_Php_Mysql_Sql - Fatal编程技术网

Php 如何将服务器$作为id存储在数据库中

Php 如何将服务器$作为id存储在数据库中,php,mysql,sql,Php,Mysql,Sql,我想将Ip地址作为Id存储在数据库中。 为此,我首先使用str replace来去除这些点 $ipAddress = $_SERVER['REMOTE_ADDR']; $user_id = str_replace(".","",$ipAddress); 我的查询如下所示: CREATE TABLE `posts` ( `id` int(24) NOT NULL PRIMARY KEY AUTO_INCREMENT, `text` text NOT NULL ) ENGINE=InnoDB DE

我想将Ip地址作为Id存储在数据库中。 为此,我首先使用
str replace
来去除这些点

$ipAddress = $_SERVER['REMOTE_ADDR'];
$user_id = str_replace(".","",$ipAddress);
我的查询如下所示:

CREATE TABLE `posts` (
`id` int(24) NOT NULL PRIMARY KEY AUTO_INCREMENT,
`text` text NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
问题:他在数据库中将
用户id
存储为“2147483647”

为了进行测试,我对
$user\u id它给了我这个值(我的ip):
9421491192

那么,为什么它要在数据库中存储另一个值,而不是像上面那样存储我的ip

  • 您的id列应该只是一个自动递增的数字列。与中一样,不要在此处使用IP
  • 如果要去除这些点,请填充八位字节,这样剩下的3位数字就不会是1.23.45.67和12.34.5.67了。然而,我建议完全跳过这一步,只保留这些点
  • 为IP地址创建一个单独的列,并将其存储为字符或字符串字段
  • 在ip_地址列上创建唯一索引

  • 不要这样做..去掉这些点太可怕了
    1.23.45.67
    将产生与
    12.34.5.67
    相同的值。如果要将IP地址转换为数字,请使用
    ip2long()
    。为IP存储创建一个新字段,在php中使用unsigned int(11),然后在mysql中使用ip2long(),或使用INET_ATON。相反,php中的long2ip()或mysql中的INET_NTOA。
    2147483647
    是有符号的
    int
    列可以存储的最大值。你所做的一切都是错误的/不好的-IP不是INT,它们不是用户ID,删除点是可怕的。重新开始。