Arc*_*hey 36 php mysql insert steam-web-api
好吧,所以我一直在玩Steam Web API,我有一个值存储在一个名为的变量中$steam64.当我使用此代码片段将其插入到mysql数据库中时,它会插入一个完整的不同整数,而不是存储在变量中的整数.
$sql_query = "INSERT INTO users_info (steam64) VALUES ('$steam64')";
var_dump($steam64);返回真正的int,所以回显它.不太清楚这里发生了什么,任何帮助表示赞赏.
Mik*_*ell 36
这可能是因为你用双引号包装查询,但变量是单引号,所以它被视为文字,如果列是int,你将得到0.
试试这个:
$sql_query = "INSERT INTO users_info (steam64) VALUES ('" . $steam64 . "')";
Run Code Online (Sandbox Code Playgroud)
此外,在我受到抨击之前,请务必阅读SQL注入,以防您没有清理直接发布到sql语句中的变量.
- 更新 -
基于您对"倾销价值"的评论; 您尝试插入的数字对于32位系统来说太大了.32位的最大值为4,294,967,295,64位的最大值为18,446,744,073,709,551,615.我建议将列转换为varchar(100)哈希而不是int,或者切换到64位系统.大约最多文章INTS 这里,并在这里.
小智 9
虽然我玩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;
Run Code Online (Sandbox Code Playgroud)
整数类型INT为4字节存储空间,从-2^(4*8-1)=-2147483648到2^(4*8-1)-1=2147483647,当您具有“ 签名 ”标志时,如果将标志更改为无符号,则范围为0到2^(4*8)-1。MySQL支持BIGINT为8Bytes存储。如果您尝试保存更大的值,则将保存范围的最大值
小智 5
数据类型INT的最大值是2147483647。如果要插入的数字大于2147483647,则将引起问题。对于解决方案,将数据类型从INT更改为BIGINT,因为BIGINT的最大值为9223372036854754775807,这可能会解决您的问题。看一下这个站点:https : //dev.mysql.com/doc/refman/5.7/en/integer-types.html