好的,我正在开展一个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']);
答案 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(数据类型为整数的列),那么一切都应该没问题,但是检查它永远不会伤害...