我在 facebook 上有一个应用程序,我将用户记录在我的数据库中(一个脚本检查用户是否已经在数据库中,如果没有,它会添加他)。 users 表只有一个字段——“userid”,这是一个主键。
检查用户是否已经在数据库中注册的脚本是:
$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 上都不存在!!),当他再次进入应用程序,他收到以下消息:
Duplicate entry '2147483647' for key 1
就像它试图再次添加它,即使它已经存在于数据库中!
谁能算出来?
最佳答案
关于MySQL中字段的定义。我确定您的字段设置为 INT 类型。
键 1 的重复条目“2147483647”== MySQL 中此类型的最大数量。
因此,当 FB ID 大于此值时,MySQL 会将其设置为允许的最大值,因此当 ID 较大时会为您提供重复项,因为条目必须是唯一的。
将字段更改为 VARCHAR(255),您的问题将得到解决。
ALTER 预测用户
ALTER COLUMN userid
VARCHAR(255) NULL
关于php - 在 Facebook 上登录用户时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7615156/