在Facebook上记录用户时出错

时间:2011-09-30 19:29:08

标签: php facebook facebook-graph-api

我在facebook上有一个应用程序,我在我的数据库上记录用户(脚本检查用户是否已经在数据库中,如果没有,则添加他)。 users表只有一个字段 - “userid”,这是一个主键。

检查用户是否已在db中注册的脚本是:

    $selectuser = $db->query("SELECT * FROM `predictorusers` WHERE `userid`='$user'");
if ($db->countRows($selectuser) == 0)
    $db->query("INSERT INTO `predictorusers` (`userid`) VALUES ('$user')");

现在问题:我不知道为什么,但是对于特定的用户(对于大多数用户来说,如果工作得很好)它会插入id 2147483647(在Facebook上甚至不存在!!),当他再次进入应用程序,他收到以下消息:

  

密钥1的重复条目“2147483647”

就像它试图再次添加它,即使它已经存在于db !!

有人能搞清楚吗?

2 个答案:

答案 0 :(得分:8)

关于MySQL中字段的定义。我确定你的字段设置为INT类型。

重复条目'2147483647'表示密钥1 == MySQL中此类型的最大数字。

因此,当FB ID大于此值时,MySQL会将此值设置为允许的最大值,因此当ID较大时会给您重复,因为条目必须是唯一的。

将字段更改为VARCHAR(255),您的问题将得到解决。

ALTER predictorusers ALTER COLUMN userid VARCHAR(255)NULL

答案 1 :(得分:0)

使用BIGINT(20)作为数据类型。 FB ID太大了。