所以我把我的网站上传到我刚买的网络服务器上,在我的电脑上一切都很正常。但是现在我在我的数据库中插入数据时遇到了一个问题,我追踪到了这个问题,就是创建插入到每一行中的行的用户的IP地址。
我有一个php函数,它返回ip2long值,如下所示:
function ip2()
{
return ip2long($_SERVER['REMOTE_ADDR']);
}然后将它插入到我的数据库中,sql代码如下所示:
$sql = "INSERT INTO `Users`
(
`Username`,
`Password`,
`Email`,
`ip_created`
)
VALUES
(
'".$db->sql_escape(htmlspecialchars($this->username, ENT_QUOTES))."',
'".$db->sql_escape($this->secure_pass)."',
'".$db->sql_escape($this->clean_email)."',
'".ip2()."'
)";
$db->sql_query($sql))ip_created字段是长度为10的int
所有的数据库交互都是在php类中处理的,这可能是一个问题。
我真的不知道这个问题是从哪里来的,它真的开始困扰我了。在我的本地版本中,一切都很完美。
发布于 2012-09-17 13:30:33
id2long手册页注释包含:
请注意,当您运行64位系统时,ip2long将产生不适合MySQL INT的64位整数,您可以使用BIGINT或INT无符号,因为在64位系统上,ip2long永远不会返回负整数。另见https://bugs.php.net/bug.php?id=54338
这可能是原因吗?
https://stackoverflow.com/questions/12460189
复制相似问题