2014-09-29 3 views
0

'고객'테이블이있는 데이터베이스가 있습니다. 이 행에서 대부분의 고객은 가치 또는 숫자를가집니다. 나는 가장 높은 번호를 얻으려고 노력 중이므로 등록한 다음 사람이 highest number + 1을 얻을 것입니다. 행 'usr' is varchar(255).PHP MySQL 선택 행 번호가 잘못되었습니다.

그것은 다음과 같은 코드로 일하고

: 오늘이 옵션을 선택하면 내가 왜 9 반환이 9 반환 된 내 쿼리를 선택하면 두 개의 최신 레지스터가 모두 숫자 10을 한 것으로보고

$query = "SELECT MAX(usr) AS usr FROM customer"; 
$result = mysql_query($query); 
$record = mysql_fetch_assoc($result); 
$maxID = $record['id']; 
$nieuwID = $maxID + 1; 

10 아닌가요? 내 레지스터가 고유 번호를 갖도록 어떻게 수정하면됩니까?

+2

마지막 레코드를 확인하고 업데이트하는 대신에 Auto_increment를 사용하십시오. – DeDevelopers

+1

이렇게하는 동안 다른 사용자가 가입하면 어떻게됩니까? – Strawberry

+1

@Strawberry : Easy : 동일한 번호를 가진 두 명 이상의 사용자가 있습니다. – Piskvor

답변

2

usr은 정수 여야합니다. 테이블 필드 구조를 변경하십시오.

0

숫자를 문자열로 저장하지 마십시오. 문자열 최대 값을 얻고 있습니다.

select max(usr + 0) as usr 
from customer 

을하지만, 주석에서 권장하는대로, 당신은 자동 증가 필드를 원하는 경우, auto_increment를 사용하고 선의의 숫자로 열을 정의 : 숫자 최대를 들어, 숫자로 변환합니다.

0

MAX()varchar 필드와 함께 사용할 수 없습니다. MAX()를 사용하려면 해당 필드를 varchar 대신 integer으로 변환해야합니다.

또한이, 뺄셈, 평균, 최대 등 VARCHAR 필드 형식

0

확인을 먼저 @DeDevelopers에서 작동하지 않습니다 필요한 작업이 바로 auto_incroment는 이런 일이 발생을 중지 강화에 기여해야한다.

난 강력하게 중복 확률이 일어날 수 있습니다 낮은 등의 경우에도 삽입 또는 업데이트 문 너희 안에이를 사용하여 조언을

, 또한 테이블 구조를 방문하는 @DeDevelopers 댓글 그렇지 않은 경우 지원)

을 다시하는 것이 좋습니다 것입니다 그런 다음 해당 테이블 열에 대한 고유 한 키 식별자 나 장소에서 오류 검사를 수행하십시오.

+0

삭제가 없다고 가정하고 계시나요? !! – Strawberry

+0

하하, 당신의 오른쪽, 금발의 순간, 나는 내 대답을 편집 할거야. –