Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL中插入了不正确的整数(2147483647)?_Php_Mysql_Insert_Steam Web Api - Fatal编程技术网

Php MySQL中插入了不正确的整数(2147483647)?

Php MySQL中插入了不正确的整数(2147483647)?,php,mysql,insert,steam-web-api,Php,Mysql,Insert,Steam Web Api,好的,我一直在玩弄Steam Web API,我有一个值存储在一个名为$steam64的变量中。当我使用这个代码snipper将它插入mysql数据库时,它会插入一个与存储在变量中的完全不同的整数 $sql\u query=“插入用户信息(stream64)值(“$stream64”)” var_dump($64)返回实际的int,回显它也是如此。不太清楚这里发生了什么,非常感谢您的帮助。基于您对“价值被抛弃”的评论;您尝试插入的数字对于32位系统来说太大。32位的最大值为4294967295,

好的,我一直在玩弄Steam Web API,我有一个值存储在一个名为
$steam64
的变量中。当我使用这个代码snipper将它插入mysql数据库时,它会插入一个与存储在变量中的完全不同的整数

$sql\u query=“插入用户信息(stream64)值(“$stream64”)”

var_dump($64)
返回实际的int,回显它也是如此。不太清楚这里发生了什么,非常感谢您的帮助。

基于您对“价值被抛弃”的评论;您尝试插入的数字对于32位系统来说太大。32位的最大值为4294967295,64位的最大值为18446744073709551615。我建议您将列转换为
varchar(100)
hash而不是int,或者切换到64位系统非常好关于max ints的文章,以及



另外,在我被激怒之前,请务必仔细阅读,以防您没有清理直接发布到sql语句中的变量。

2147483647是mysql的最大int值。只需将类型从int更改为bigint。

转到操作->表格选项->将增量值更改为最小值或任何您想要的增量

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;
autoincrement的最大问题是,如果它的值非常大,则错误地从最后一个条目开始,然后在插入值中开始。。使用预定义的数据类型

整数类型INT是4字节存储,从
-2^(4*8-1)=-2147483648
2^(4*8-1)-1=2147483647
,当您有“有符号”标志时,如果您将标志更改为无符号,则范围为
0
2^(4*8)-1
。MySQL支持8字节的BIGINT存储。如果您尝试保存一个更大的值,您将保存范围的最大值。最简单的方法是将MySQL中的“int”更改为“varchar”。

当我使用SQL和MySQL时,MySQL的数据类型出现了相同的问题。 将数据类型从int修改为bigint已修复问题


同意将数据类型从INTEGER更改为BIGINT。当前正在使用node.js/sequelize构建一个web应用程序下面的重构解决了从react redux表单操纵到“2147483647”的电话号码问题:

clientPhone: {
    type: DataTypes.BIGINT,
    allowNull: true
},

数据类型INT的最大值为2147483647。如果插入的数字大于2147483647,则会导致问题。 对于解决方案,将数据类型从INT更改为BIGINT,因为BIGINT的最大值为9223372036854775807,这可能会解决您的问题。 请查看此网站:

只需将数据类型从INT更改为BIGINT即可

插入的内容(以及转储的内容)和列类型是什么?这可能不是MySQL中的“bug”,这意味着问题出在其他地方……不应该在整数上使用单引号。它可能试图将字符串“$steam64”作为整数插入,并在过程中对其进行转换。@pst
2147483647
正在插入,正在转储
76561197989628470
,列类型为int(255)。@Lazerblade仅使用它
值($steam64)
仍然插入错误的int。已发布更新。您尝试插入的数字太大。谢谢:)是PHP还是MySQL有限制?这是一个系统限制,因此任何试图访问这么大的数字的应用程序都会导致意外行为。好的,快速提问一下,如果我想有一个类似7656119798000000的变量的for循环,这可能吗?是的,只要不是int,嗯。。。这回答了这个问题,因为?这没有意义,如果你在这里讨论这个问题,不要试图从这个答案推断出任何帮助。值得注意的是,BIGINT的限制为-9223372036854775808到9223372036854775807(签名)或0到18446744073709551615(未签名)。如果希望得到仅为正的大整数,请使用类似于
COLUMNNAME
BIGINT(32)的无符号默认值0不要这样做。永远不要这样做。VARCHAR是字符串表示,而不是数字表示。不可能对字符串执行数学运算。
clientPhone: {
    type: DataTypes.BIGINT,
    allowNull: true
},