Подтвердить что ты не робот

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

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

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

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

4b9b3361

Ответ 1

Вероятно, потому, что вы переносите запрос в двойные кавычки, но переменная находится в одинарных кавычках, поэтому она рассматривается как литерал, а если столбец int, вы получите вместо него 0.

Попробуйте следующее:

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

Кроме того, перед тем, как я начну плакать, обязательно прочитайте SQL injection, если вы не дезинфицируете переменные, отправляемые непосредственно в SQL-заявления.

- Обновление -

Основываясь на вашем комментарии о "ценности, сбрасываемой"; число, которое вы пытаетесь вставить, слишком велико для 32-битных систем. Максимальный размер для 32-разрядной версии 4 294 967 295, а максимальный для 64-разрядного - 18 446 744 073 709 551 615. Я бы рекомендовал преобразовать ваш столбец в хешх varchar(100), а не в int, или переключиться на 64-битную систему. Отличная статья о max ints здесь, и здесь.

Ответ 2

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

Ответ 4

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

Ответ 5

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

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

Ответ 6

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

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

Ответ 7

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

Ответ 8

Самый простой способ - изменить MySQL "int" на "varchar".

Ответ 9

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;