私は、たくさんのBIGINT値を持つテーブル(MySQL)を持っています。そして、私は2つのコンピュータにPHPコード(Laravelフレームワークに基づいて)が実行され、それらのテーブルから値を取得します。 1つのマシン(Mac OS)ですべて正常に動作しますが、別のマシン(Debian jessie)が私を怒らせます。問題は、クエリでBIGINT値を使用できないことです。ここで私が話しているかの例のカップルです:LaravelまたはPHPのBIGINTでの不思議な動作
Client::where('client_id', 10203629136783381)->first();
- null
Client::where('client_id', '10203629136783381')->first();
を返す - 戻り、正しい結果
\DB::select('SELECT * FROM clients WHERE client_id=?', [10203629136783381])
- 戻り、正しい結果
\DB::select('SELECT * FROM clients WHERE client_id=10203629136783381')
を返します。
BIGINT値をそのまま文字列として使うのではなく、MySQL-clientで直接クエリを実行すると、クエリは正常に動作します。
私はこの動作を修正し、私のコードは、BIGINT値を理解させる方法がわかりません。どちらのコンピュータも64ビットアーキテクチャで、PHPバージョンはMacでは5.6.29、Debianでは5.6.30です。
あなたのPHPのバージョンは、それほど大きな数字を扱うことができますか?使用しているPHPのバージョンをチェックし、64ビットまたは32ビットの場合はそれを確認してください。それは['INT_MAX'](http://stackoverflow.com/questions/864058/how-to-have-64-bit-integer-on-php)のテストに値する。 – tadman
私が言及したように、間違った動作をしているコンピュータ上のPHPのバージョンは、すべてがうまく動作する別のバージョンより少し新鮮です。 –
INT_MAXは両方のコンピュータで値9223372036854775807を持っています –