0

所以我把我的网站上传到我刚买的网络服务器上,一切都在我的电脑上完美运行。但是现在我在我的数据库中插入数据时遇到了问题,我将问题追溯到创建插入每行插入的行的用户的 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字段int的长度为 10

所有的数据库交互都在一个 php 类中处理,也许这可能是一个问题。

我真的不知道问题出在哪里,它真的开始困扰我。一切都在我的本地主机版本上运行良好。

4

1 回答 1

3

id2long 手册页注释包含:

请注意,当您运行 64 位系统时,ip2long 将生成不适合 MySQL INT 的 64 位整数,您可以使用 BIGINT 或 INT UNSIGNED 因为在 64 位系统上 ip2long 永远不会返回负整数。另请参阅https://bugs.php.net/bug.php?id=54338

这可能是原因吗?

于 2012-09-17T13:30:33.677 回答