我有一個數據庫和一個bigint列類型。每次我向這個列插入值時,我總是得到錯誤的數字。例如,我插入值「198705122006041001」並始終插入此值「2147483647」。bigint沒有正確插入
我爲我的項目使用laravel,如果我使用雄辯來顯示bigint它不會正確顯示,但如果我手動使用PDO,它將正確顯示。
我有一個數據庫和一個bigint列類型。每次我向這個列插入值時,我總是得到錯誤的數字。例如,我插入值「198705122006041001」並始終插入此值「2147483647」。bigint沒有正確插入
我爲我的項目使用laravel,如果我使用雄辯來顯示bigint它不會正確顯示,但如果我手動使用PDO,它將正確顯示。
您應該再次檢查一次,因爲它絕對是int
,但不是bigint
。 2147483647
是一個maximum possible value for signed int
PHP沒有bigint數據類型,它溢出並使用int.max來代替。你必須將bigint表示爲字符串或浮點數。請注意,浮動不精確,可能會導致意外。
在MySQL中進行數學轉換,並且在必要時不要忘記轉換爲bigint。
我的問題是如果我使用Eloquent來顯示這個列的值,它將回收2147483647,不管它是什麼值。如果我手動使用PDO檢索數據,它將顯示正確的值。那麼我怎麼能在雄辯中處理這個Bigint呢?轉換爲varchar /文本或字符串不是一個選項。謝謝 –
請參閱https://laracasts.com/discuss/channels/eloquent/fbid-bigint-with-model-and-eloquent。 Laravel用戶遇到同樣的問題,最終不得不將結果轉換爲字符串。
另一位用戶評論指出,XAMPP只提供一個32位PHP二進制文件,它限制了PHP整數的大小。
使用此代碼檢查你的PHP整數大小:
<?php
echo "Integer size can be determined using the constant PHP_INT_SIZE="
. (PHP_INT_SIZE * 8)
. " bits, maximum value using the constant PHP_INT_MAX="
. PHP_INT_MAX;
也http://php.net/manual/en/language.types.integer.php
請參閱安裝https://laravel.com/docs/5.3/homestead,並得到一個64位二進制PHP。
我的問題是,如果我使用Eloquent來顯示這個列的值,那麼無論值是什麼,它都會回收2147483647。如果我手動使用PDO檢索數據,它將顯示正確的值。 那麼我怎麼能在言語中處理這個Bigint呢? 轉換爲varchar /文本或字符串不是一個選項。謝謝 –