我一直在Facebook应用程序上工作,但是当我注册一个新用户来测试朋友交互时,新用户得到了一个似乎很难处理的uid(100000XXXXXXXXX
)。
将数字保存在数据库中会产生相同的值(2147483647
)。我猜这也是PHP的错,因为我相信uid会适合一个无符号的bigint?
我不太确定从哪里开始,有什么建议吗?
答案 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;
......我怀疑一切都会好起来的。
注意:您需要在备份时尝试此操作,以确保我没有错误。 : - )