php - CodeIgniter 不断为 int 值插入 2147483647

标签 php mysql codeigniter

每次我尝试将 id 1008218499200959 或任何其他“long”int 值存储到数据库时,它都存储为 2147483647,并且我将数据长度设置为 20,所以我猜长度应该不是问题。

这是 CodeIgniter 还是数据库问题?

我后来通过将数据类型更改为 varchar 来修复它,但我仍然想知道为什么它会这样。谢谢。

--表applicants

的表结构
CREATE TABLE IF NOT EXISTS `applicants` (
  `id` int(20) NOT NULL,
  `first_name` varchar(20) NOT NULL,
  `last_name` varchar(30) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;`

最佳答案

问题出在基于您定义的 id 类型的 MySQL。最大的 int 值是 2147483647。查看他们的文档:https://dev.mysql.com/doc/refman/5.5/en/integer-types.html

其他选项:

  • 签名的 BIGINT 可以让你到 9223372036854775807
  • 未签名的 BIGINT 可以让你得到 18446744073709551615
  • DECIMAL 的最大位数是 65

(有关详细信息,请参阅 https://dev.mysql.com/doc/refman/5.0/en/numeric-type-overview.html)。

关于php - CodeIgniter 不断为 int 值插入 2147483647,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33113225/

相关文章:

php - 有没有办法将各种 MYSQL 查询与多个 WHERE 子句结合起来?

sql - 创建更快的 MySQL 查询

mysql - 如何从 MYSQL 转储中恢复数据而不出现任何重复键错误?

codeigniter - 如何在codeigniter中设置复选框的值并显示选中状态?

php - 当按 id 或代码搜索时,如何从 codeigniter 中的 mysql 结果获取行索引

php - 按 2 个 id 对输出进行分组

php - 如何将段落拆分成句子

mysql - 在 MYSQL 中将带括号的负数转换为减号

php - 在CodeIgniter中如何应用cUrl获取数据

php - SQL 查询在 MySQL 中返回完整结果,在 PHP 中返回部分结果