4

我有两张带有 bigint 的表:

table1
id bigint(20) PK autoincrement
name varchar(40),
text

table2
id bigint(20) PK autoincrement
created datetime
text_field
id_table1_ref bigint(20)

向table1插入数据后,尝试将table1.id插入table2.id_table1_ref,数量不同,即:

table1.t1 中的数字 1552545662588 变为 1552545662,甚至更糟的是一个负数。

我知道这是设置问题,但我不知道如何管理它。我尝试为字段设置有符号/无符号值,但它不起作用。

这发生在我的 UNIX 本地计算机上,在服务器上一切正常,至少现在是这样。

任何帮助将非常感激。

4

3 回答 3

4

在将其转换为 PHP 之前,您需要将其转换为 SQL 中的字符串。在 PHP 中,您可以使用GMP来处理数字。

关于转换的 MySQL 文档:http: //dev.mysql.com/doc/refman/5.7/en/cast-functions.html#function_convert

于 2013-05-04T15:29:01.140 回答
4

至少在某些 64 位操作系统(例如 FreeBSD AMD64)下的 PHP 使用 8 字节 int 也是如此,可通过测试验证

echo 'int 的大小是 '.PHP_INT_SIZE ;

因此,如果您只打算运行 64 位操作系统,则不需要在 PHP 中将 BIGINT 作为字符串进行管理。

于 2014-04-20T18:12:44.773 回答
-2

我通过更改为另一个 php 版本解决了这个问题,即从 64 位 php 版本更改为 32 位 php 版本。这真的对我有用。

于 2016-03-02T00:48:40.683 回答