문제

PHP와 Phpmyadmin을 사용하여 작은 프로파일 사이트를 만들고 있습니다. 데이터베이스에서 현재 가장 큰 숫자 인 +1을 기준으로 ID 번호를 회원에게주고 있습니다.

PHP 스크립트를 받기 전에 25 개의 테스트를 수행했습니다.

그런 다음 phpmyadmin을 사용하여 25 개의 항목을 삭제했습니다.

그러나 이제 내 PHP 코드가 다음을 수행 할 때 :

function getLatestID() {
    $query = "SELECT max(member_id) FROM members";
    $result = @mysql_query($query) or showError("unable to query database for user information");
    if (!($record = mysql_fetch_array($result))) return null;
    return $record[0];
}

나는 잘못된 번호를 얻는다.

테스트 시나리오 : 데이터베이스 테이블에는 ID의 1, 2 및 3이 포함 된 3 개의 항목이 있습니다.

디버깅 세션을 시작하고 반품에 중단 점을 넣었습니다. $record[0]. 나는 그 내용을 확인하고 3 대신 가장 큰 숫자 인 것은 28입니다.

25+3 = 28에서와 같이, 내가 모두 삭제 한 25 개의 항목은 ...

이 원인이 무엇인지, 어떻게 고칠 수 있는지 아는 사람이 있습니까?

도움이 되었습니까?

해결책

아마도 auto_increment 세트가 있고 쿼리가 가장 높은 ID를 반환하기 때문일 것입니다. 다른 레코드를 삭제하면 자동 증분 수를 재설정하지 않았을 것입니다.

다른 팁

사용하는 경우 auto_increment MySQL에서 레코드를 삭제하면 다음 값이 줄어들지 않습니다.

당신은 테이블을 비우실 수 있습니다 TRUNCATE TABLE mytable - 값을 재설정합니다.

자동 점수가 생각하는 값을 변경할 수도 있습니다.

ALTER TABLE members AUTO_INCREMENT = 3;

자동 점수 열에서 현재 최대 값보다 적은 값을 넣으면 최대+1로 값을 변경합니다. 현재 다음 값이 설정된 내용을 확인하려면 다음을 수행하십시오.

SHOW CREATE TABLE members;

테이블 정의가 끝나면 표시됩니다.AUTO_INCREMENT = 26"또는 그것이 현재 가치가 무엇이든.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top