不正确的整数(2147483647)被插入到 MySQL 中?

2022-01-09 00:00:00 insert php mysql steam-web-api

好吧,所以我一直在玩弄 Steam Web API,我将其中一个值存储在一个名为 $steam64 的变量中.当我使用此代码剪辑器将其插入到 mysql 数据库中时,它会插入一个与变量中存储的完全不同的整数.

Alright, so I've been toying around with the Steam Web API, I have one of the values stored in a variable called $steam64. When I use this code snipper to INSERT it into a mysql database it insert a completley different integer than what is stored in the variable.

$sql_query = "INSERT INTO users_info (steam64) VALUES ('$steam64')";

var_dump($steam64); 返回真正的 int,回显它也是如此.不太清楚这里发生了什么,感谢任何帮助.

var_dump($steam64); returns the real int, so does echoing it. Not too sure what is going on here, any help is appreciated.

推荐答案

基于您的价值被倾销"的评论;您尝试插入的数字对于 32 位系统来说太大了.32 位的最大值为 4,294,967,295,64 位的最大值为 18,446,744,073,709,551,615.我建议将您的列转换为 varchar(100) 哈希而不是 int,或者切换到 64 位系统.很棒的文章关于最大整数 这里和这里.

Based on your comment of "value being dumped"; the number you are trying to insert is too large for 32-bit systems. The max for 32-bit is 4,294,967,295, and the max for 64-bit is 18,446,744,073,709,551,615. I'd recommend converting your column into a varchar(100) hash rather than an int, or switch to a 64 bit system. Great article about max ints here, and here.

另外,在我被激怒之前,请务必阅读 SQL 注入,以防万一您没有清理直接发布到 sql 语句中的变量.

Also, before I get flamed, be sure to read up on SQL injection in case you are not sanitizing variables being posted directly into sql statements.

相关文章