如何在MySQL中存储Twitter ID?

时间:2013-02-04 20:10:53

标签: mysql twitter

Twitter seach API返回一个JSON对象,a.o。包含推文的唯一ID:

[id] => 2.9851634017882E+17
[text] => foobar

我在我的数据库中创建了一个MySQL bigint(20)字段来存储id。但是,当我尝试存储id时,在数据库中只显示2(在本例中)。

我做错了什么?

4 个答案:

答案 0 :(得分:1)

MySQL不会将2.9851634017882E+17理解为INT,因为它不是。它将数字截断为从输入开头找到的最长整数,即2。您需要将其作为int放入查询中,而不是科学计数法。此外,如果这正是您从Twitter获得的,那么您甚至不知道ID,因为该数字的精确度不会下降到那个地方。

答案 1 :(得分:1)

对于调用中的每个id,我建议在将值发送给PHP之前将值转换为字符串。

我用我自己的webapp做这件事,效果很好。我遇到了与API完全相同的问题。

<强>离。将jquery与Twitter API一起使用

$.getJSON('https://api.twitter.com/1.1/search/tweets.json?q=api&callback=?', function(data){
     $.each(data, function() { 
     this.id_str = this.id_str + ""; // cast integer as string to avoid PHP int to float conversion on json_decode

/* ... more API parsing code ... */

还要确保捕获id_str值,而不是id值。 id_str优先于id,在处理较大的ID时为less error prone

答案 2 :(得分:1)

Twitter ID分类为64-bit integers。这样存储它们是最好的行动方案。在MySQL中,数据类型为BIGINT

由于不同的JSON解释器难以解析BIGINT,我首选的方法是根据规范使用Feed:

  

...考虑尽快转换为ID的_str版本   可能的。

作为JSON使用者,我会解释id的_str版本,并插入这个&#34; safe&#34;值进入BIGINT列。

答案 3 :(得分:0)

你得到的身份证是一个浮动。如果推特给你花车作为ID,我会非常惊讶。

您确定JSON对象未被将所有整数转换为浮点数的东西解析吗?当您修复它时,将解决保存值的问题。