Twitter 検索 API は、ツイートの一意の ID を含む JSON オブジェクト ao を返します。
[id] => 2.9851634017882E+17
[text] => foobar
ID を格納するためにデータベースにMySQLbigint(20)
フィールドを作成しました。ただし、ID をデータベースに保存しようとすると2
、(この場合) としか表示されません。
私は何を間違っていますか?
呼び出し内のすべてのIDについて、PHPに送信する前に値を文字列に変換するアプローチをお勧めします。
私は自分のウェブアプリでこれを行っています、そしてそれは素晴らしい働きをします。APIでまったく同じ問題に直面しました。
元。TwitterAPIでjqueryを使用する
$.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を処理するときにエラーが発生しにくくなります。
取得するIDはフロートです。ツイッターがIDとしてフロートを提供してくれるとしたら、私は非常に驚きます。
JSONオブジェクトがすべての整数をfloatに変換するものによって解析されていないことを確認しますか?これを修正すると、値を保存する際の問題が解決されます。
MySQLは理解していないので、理解2.9851634017882E+17
していINT
ません。数値を、入力の先頭から検出した最長の整数である。に切り捨てます2
。科学的記数法ではなく、intとしてクエリに入れる必要があります。また、それがまさにTwitterから返ってきたものである場合、その番号の精度は1の位まで下がらないため、IDさえわかりません。