Неправильное целое число (2147483647) вставляется в MySQL?

Хорошо, поэтому я работал с API веб-интерфейса Steam, у меня есть одно из значений, хранящихся в переменной под названием $steam64 . Когда я использую этот обработчик кода для ввода INSERT в базу данных mysql, он вставляет полное целое число, отличное от того, что хранится в переменной.

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

var_dump($steam64); возвращает реальный int, так что повторяет его. Не слишком уверен, что здесь происходит, любая помощь ценится.

    Вероятно, потому, что вы завершаете запрос в двойных кавычках, но переменная находится в одинарных кавычках, поэтому она обрабатывается как литерал, а если столбец 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-битную систему. Отличная статья о max ints здесь , и здесь .

    2147483647 – наибольшее значение int для mysql. Просто измените тип от int до bigint.

    В то время как я играл с SQL, и MySQL имел ту же проблему с типом данных MySQL int. Изменение типа данных из int в фиксированную проблему bigint .

    Типы MySQL Integer http://dev.mysql.com/doc/refman/5.7/en/integer-types.html

     ALTER TABLE tablename MODIFY columnname BIGINT; 

    Целочисленный тип INT является хранилищем 4Bytes, вы получаете от -2^(4*8-1)=-2147483648 до 2^(4*8-1)-1=2147483647 , когда у вас есть « подписанные » флаги, если вы меняете флаги без знака будут иметь диапазон от 0 до 2^(4*8)-1 . MySQL поддерживает BIGINT в качестве хранилища 8Bytes. Если вы попытаетесь сохранить значение больше, вы сохраните максимальное значение диапазона

    Перейдите в операции-> параметры таблицы -> измените значения приращения на минимальное или любое другое значение, которое вы хотите увеличить.

    большая проблема автоинкремента заключается в том, что она начинается с последней записи по ошибке, если ее очень большое значение затем запускает проблему в значение insert .. с нашим предопределенным типом данных
    введите описание изображения здесь

    Согласитесь с изменением типа данных в BIGINT от INTEGER. В настоящее время создание веб-приложения с node.js / sequelize ниже рефакторе решает номер телефона номер из реакции-редукция формы, манипулируемой с '2147483647':

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

    Наибольшее значение для типа данных INT – 2147483647. Если номер, который вы вставляете, больше, чем 2147483647, это вызовет проблему. Для решения измените тип данных с INT на BIGINT, поскольку BIGINT имеет максимальное значение 9223372036854775807, это может решить вашу проблему. Посмотрите этот сайт: https://dev.mysql.com/doc/refman/5.7/en/integer-types.html

    Самый простой способ – это изменение в MySQL «int» на «varchar».

     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;