php 是沒有bigint的,超過一定長度其實是當做float類型處理的。在表示的時候,會使用科學計數法。
演示code
在客戶端執行:
php -r "echo 20123456789123456789;"
輸出:
2.0123456789123E+19
那么怎么避免這種情況呢?用number_format().
php -r "echo number_format(20123456789123456789,0,'.','');"
輸出:
20123456789123457024
很明顯最后2位不對。
如前面說的,int超過長度,已經益處,此時數據已經部分殘缺了。沒有解決辦法。處理方式就是表創建該字段不應該用數字,而應該用字符串。