如何处理Facebook新的UID尺寸?

时间:2009-11-16 15:47:13

标签: php mysql facebook integer

我一直在Facebook应用程序上工作,但是当我注册一个新用户来测试朋友交互时,新用户得到了一个似乎很难处理的uid(100000XXXXXXXXX)。

将数字保存在数据库中会产生相同的值(2147483647)。我猜这也是PHP的错,因为我相信uid会适合一个无符号的bigint?

我不太确定从哪里开始,有什么建议吗?

4 个答案:

答案 0 :(得分:9)

修复方法是始终将UID存储为字符串。在MySQL中使用VARCHAR字段类型,你会没事的。

一般来说,许多数据库专家会告诉你,解释另一个应用程序的外键(在这种情况下就像UID)是坏坏坏,你应该将它们作为不透明文本来处理。

答案 1 :(得分:6)

Facebook建议将其存储为未签名的BIGINT。

可以找到{p> User对象详细信息和连接here

对于PHP,你将它存储为一个字符串(因为,最终,如果你要使用它,它将显示在页面上或JSON数据中或其他类似的字符串中。没有实际需要对该数字进行算术运算。)

答案 2 :(得分:1)

我正在使用BIGINT UNSIGNED用于几个应用程序,它工作得很好。

答案 3 :(得分:0)

您在哪种类型的MySQL字段中存储UID数据? unsigned bigint最多可以存储18446744073709551615.(参见http://dev.mysql.com/doc/refman/5.0/en/numeric-type-overview.html

只需更新您的架构......

ALTER TABLE <table name> MODIFY COLUMN <column name> BIGINT UNSIGNED NOT NULL;

......我怀疑一切都会好起来的。

注意:您需要在备份时尝试此操作,以确保我没有错误。 : - )