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);
returns the real int, so does echoing it. Not too sure what is going on here, any help is appreciated.
It\'s probably because you are wrapping the query in double quotes, but the variable is in single quotes, so it\'s being treated as a literal, and if the column is int you will get a 0 instead.
Try this:
$sql_query = \"INSERT INTO users_info (steam64) VALUES (\'\" . $steam64 . \"\')\";
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.
-- Update --
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.
2147483647 is the largest int value for mysql. Just change the type from int to bigint.
While I was playing with SQL and MySQL had the same problem MySQL int data type.
Modifying data type from int to bigint fixed issue.
MySQL Integer Types http://dev.mysql.com/doc/refman/5.7/en/integer-types.html
ALTER TABLE tablename MODIFY columnname BIGINT;
The integer type INT is 4Bytes storage, you get from -2^(4*8-1)=-2147483648
to 2^(4*8-1)-1=2147483647
, when you have \"signed\" flags, if you change the flags to unsigned you will have a range from 0
to 2^(4*8)-1
. MySQL support BIGINT being 8Bytes storage. If you try save a value greater, you will save the max value of the range
Simply Change the data type from INT to BIGINT
The largest value for data type INT is 2147483647. If the number you\'re inserting is bigger than 2147483647, then it will cause the problem.
For solution, change the data type from INT to BIGINT as BIGINT has a maximum value of 9223372036854775807, it might solve your problem.
Have a look at this site:
https://dev.mysql.com/doc/refman/5.7/en/integer-types.html
Go to operations-> table options -> change increment values to minimum or whatever you want to increment..
the big problem of autoincrement is it\'s start from last entry by mistake if its very large value then start problem in insert value.. with our predefined datatype
Agree with the datatype change to BIGINT from INTEGER. Currently building a web app with node.js/sequelize the below refactor solved the phone number post from react-redux form manipulated to \'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;
Easiest way is change in MySQL \"int\" to \"varchar\".