2012-04-07 4 views
1

저는 PHP 대학 프로젝트에 참여하고 있습니다. 학생들에게 성, 이름, 성, 전화 번호, 아이디 번호 등을 등록하고 등록해야합니다.PHPMyAdmin에서 MySQL 데이터 유형이 변경되지 않습니다 ...?

처음에는 ID 번호로 int를 사용했습니다. 그러나 나는 그것을 varchar로 바꿨으므로이 수학으로 어떤 수학도하지는 않겠지 만이 변경 후에는 내가 제출 한 모든 예제가 varchar로 지정되었을 때 여전히 최대 int 값 "2147483647"이 나온다. 왜 그렇습니까? 이 일이 어떻게 해결할 수 있습니다.

테이블 필드의 데이터 정렬이 모두 latin1_swedish_ci 인 경우 도움이됩니다. 저는 MySQL 전문가가 아니므로이 문제의 맨 아래로 가야 할 다른 정보가 있으면 질문하십시오.

편집 : 필드의 값을 다시 bigint로 변경했는데 8888888888888 (13 자)을 입력 했는데도 여전히 테이블에 2147483647이 표시되므로 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 (? PK) 필드에 문자를 사용할 필요가없는 ID로 varchar를 사용하지 마십시오이 문제

$id_number=intval($_POST['id_number']); 
$id_number=($_POST['id_number']); 
+0

는 숫자 유형의 경우, 다음 INT/BIGINT로 떠나 ...

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

값이 DB에서 오는 경우

모든 것을 확인해야한다 (데이터 형식의 열은 정수)하지만 확인 상처하지 . 값에 '수학'을하지 않는다고해서 int로 유지하는 데 필요한 모든 것을 버려야한다는 의미는 아닙니다. 어떻게이 '변화'를 했습니까? 'alter table'? –

+0

또한 Prof의 데이터베이스 구조를 덤프 할 필요가 없으므로 php 앱은 이식 가능해야하며 그의 코드를 데이터베이스에 연결해야합니다. – grasshopper

+0

phpmyadmin에서 구조 메뉴 아래에서 필드의 데이터 유형을 변경했습니다. – grasshopper

답변

2

를 해결했습니다. 정수를 사용하는 것이 더 빠릅니다. 어쩌면 PHP 스크립트가 DB의 varchar을 정수로 변경하려고하므로 ID를 다시 int으로 변경하십시오.

bigint이 정말로 필요합니까? 서명되지 않은 int은 충분할 수도 있습니다. http://dev.mysql.com/doc/refman/5.0/en/integer-types.html

업데이트 : 값이 정수인지 확인해야하는 경우 데이터 유형을 확인해야합니다.

+0

Oktype은 gettype()을 사용하여 유형을 확인했습니다. 유형은 PHP에서 정수이고 필드의 유형은 varchar이지만 테이블의 값은 여전히 ​​2147483647입니까? – grasshopper

+0

@grasshopper DB 데이터 유형을 integer로 변경하고 필요한 경우 자동 증가를 재설정하십시오. (당신이 정확하게 당신을 이해한다면 당신은 DB에서 최대'int' 값을가집니다.) –

+0

당신이 옳았어요. PHP 코드 $ id_number = intval ($ _ POST [ 'id_number']); 나는 intval 함수가 문제를 일으킨 것 같아요. 내가 꺼낸 이래로 모든 것이 작동하고 있습니다. – grasshopper

관련 문제