MySQL数据类型在PHPMyAdmin中没有变化......?

时间:2012-04-07 17:16:37

标签: php mysql

好的,我正在开展一个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']);

1 个答案:

答案 0 :(得分:2)

除非您确实需要在ID(PK?)字段中使用字母,否则请勿使用varchar作为ID。使用整数更快。也许PHP脚本试图将数据库的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(数据类型为整数的列),那么一切都应该没问题,但是检查它永远不会伤害...