小编典典

将不正确的Integer(2147483647)插入MySQL?

mysql

好的,所以我一直在研究Steam Web
API,我将其中一个值存储在名为的变量中$steam64。当我使用此代码片段将其插入到mysql数据库中时,它会插入一个与存储在变量中不同的整数。

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

var_dump($steam64);返回真实的int,回显它也是如此。不太确定这里发生了什么,我们将不胜感激。


阅读 290

收藏
2020-05-17

共1个答案

小编典典

可能是因为您将查询用双引号引起来,但是变量用单引号引起来,因此将其视为文字,并且如果该列是int,则将得到0。

尝试这个:

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

另外,在被解雇之前,请确保对SQL注入有所了解,以防您不清理直接发布到sql语句中的变量。

-更新-

根据您对“价值倾销”的评论;对于32位系统,您要插入的数字太大。32位的最大值为 4,294,967,295 ,而64位的最大值为
18,446,744,073,709,551,615 。我建议将您的列转换为varchar(100)哈希而不是int,或切换到64位系统。
约最大整数文章在这里,并在这里

2020-05-17