BIGINT改为指数级

时间:2016-10-04 07:24:40

标签: php sqlite

我有一个sqlite表 - 地址如下:

<select onchange="myFunction(this.value)">

但是,当我尝试在数量非常大的appid中保存数据时,我会得到类似+-----------------------------+ | appid | BIGINT (20) | | address | CHAR(300) | | addr_id | BIGINT(11) | +-----------------------------+ 的内容。我尝试使用9.0916073007e+18,但这也无效。

我该如何解决这个问题?

编辑:

real

1 个答案:

答案 0 :(得分:1)

SQLite支持带符号的64位整数,即最大值为9223372036854775807:

sqlite> create table t(x);
sqlite> insert into t values(9223372036854775807);
sqlite> select * from t;
9223372036854775807

然而,PHP documentation说:

  

整数的大小取决于平台,尽管最大值约为20亿是通常的值(32位签名)。 64位平台的最大值通常约为9E18,除了PHP之前的Windows,它总是32位。
  [...]
  如果PHP遇到超出整数类型边界的数字,它将被解释为浮点数。

所以你必须升级到最近的64位版本的PHP。或者将值作为字符串处理。