好的,所以我一直在玩弄 Steam Web API,我将其中一个值存储在一个名为$steam64
. 当我使用此代码剪辑器将其插入到 mysql 数据库中时,它会插入一个与存储在变量中的整数完全不同的整数。
$sql_query = "INSERT INTO users_info (steam64) VALUES ('$steam64')";
var_dump($steam64);
返回真正的 int,回显它也是如此。不太清楚这里发生了什么,任何帮助表示赞赏。
好的,所以我一直在玩弄 Steam Web API,我将其中一个值存储在一个名为$steam64
. 当我使用此代码剪辑器将其插入到 mysql 数据库中时,它会插入一个与存储在变量中的整数完全不同的整数。
$sql_query = "INSERT INTO users_info (steam64) VALUES ('$steam64')";
var_dump($steam64);
返回真正的 int,回显它也是如此。不太清楚这里发生了什么,任何帮助表示赞赏。
2147483647 是 mysql 的最大 int 值。只需将类型从 int 更改为 bigint。
当我在玩 SQL 和 MySQL 时,MySQL int 数据类型有同样的问题。将数据类型从int修改为bigint已修复问题。
MySQL 整数类型 http://dev.mysql.com/doc/refman/5.7/en/integer-types.html
ALTER TABLE tablename MODIFY columnname BIGINT;
只需将数据类型从 INT 更改为 BIGINT
数据类型 INT 的最大值为 2147483647。如果您插入的数字大于 2147483647,则会导致问题。对于解决方案,将数据类型从 INT 更改为 BIGINT,因为 BIGINT 的最大值为 9223372036854775807,它可能会解决您的问题。看看这个网站: https ://dev.mysql.com/doc/refman/5.7/en/integer-types.html
整数类型INT是 4Bytes 存储,你从-2^(4*8-1)=-2147483648
to得到2^(4*8-1)-1=2147483647
,当你有“签名”标志时,如果你将标志更改为无符号你将有一个范围 from 0
to 2^(4*8)-1
。MySQL 支持 BIGINT 为 8Bytes 存储。如果您尝试保存更大的值,您将保存范围的最大值
同意将数据类型从 INTEGER 更改为 BIGINT。目前正在使用 node.js/sequelize 构建一个 Web 应用程序,以下重构解决了从 react-redux 表单操作到“2147483647”的电话号码帖子:
clientPhone: {
type: DataTypes.BIGINT,
allowNull: true
},
CREATE TABLE `dvouchers` (
`2147483647` int(3) NOT NULL auto_increment,
`code` varchar(12) NOT NULL default '1',
`type` char(1) NOT NULL default '$',
`count` int(3) unsigned NOT NULL default '0',
`amount` int(3) unsigned default '0',
`notes` text,
`expiryDate` date default NULL,
`fkUserAdminId` int(11) NOT NULL default '0',
PRIMARY KEY (`2147483647`),
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
最简单的方法是将 MySQL 的“int”更改为“varchar”。