1

好的,我正在做一个 php 大学项目,我必须让学生注册,提交他们的详细信息——名字、姓氏、电话号码、身份证号码等。

起初我使用 int 作为 id 号,但我不打算用它做任何数学运算,所以我将其更改为 varchar,但是在此更改之后,我提交的所有示例仍然出现最大 int 值“2147483647”当我将其指定为 varchar,为什么会发生这种情况以及如何修复它。

如果有帮助,则表字段的排序规则都是 latin1_swedish_ci。我不是 MySQL 专家,所以如果您需要了解此问题的任何其他信息,请询问。

编辑:我还将字段的值更改回 bigint,它仍然在表中抛出 2147483647,即使我输入了 8888888888888(13 个字符),所以使用 varchar 或 bigint 我仍然得到 2147483647,我做错了什么?

更新:尝试更改字段的最大值时,我从 phpmyadmin 收到以下错误。

  SQL query:

ALTER TABLE  `student` CHANGE  `idno`  `idno` BIGINT( 99999999999999 ) NOT NULL

MySQL said: 

#1439 - Display width out of range for column 'idno' (max = 4294967295) 

更新:取出 intval() 解决了这个问题

 $id_number=intval($_POST['id_number']);
 $id_number=($_POST['id_number']);
4

1 回答 1

2

varchar除非您确实需要在 ID (PK?) 字段中使用字母,否则不要用作 ID。使用整数更快。也许 PHP 脚本正在尝试将 DB 更改varchar为整数,因此将 ID 更改回int.

你真的需要bigint吗?未签名int可能绰绰有余。 http://dev.mysql.com/doc/refman/5.0/en/integer-types.html

更新:如果您需要确保该值是一个整数,您应该检查它的数据类型。

if(is_int($my_value)){
  //do the script
}
  else{
    //echo error message
  }

如果该值来自 DB(数据类型为整数的列),一切都应该没问题,但检查一下不会有什么坏处……

于 2012-04-07T17:22:37.373 回答