Pergunta

Eu estou usando PHP e PHPMyAdmin para criar um site pequeno perfil. Eu estou dando membros um número de identificação, com base no que é o maior número atualmente no banco de dados, +1

Eu fiz 25 testes antes que eu tenho o script PHP onde eu queria que fosse.

Eu, então, excluídos esses 25 entradas usando o phpMyAdmin.

Mas agora, quando meu código PHP faz isso:

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];
}

Eu recebo o número errado.

cenário

Test: tabela de banco de dados contém 3 entradas, com o ID 1, 2 e 3

.

Eu iniciar uma sessão de depuração e colocar um ponto de interrupção na $record[0] retorno. I verificar o seu conteúdo e, em vez de 3, que é o maior número, é 28.

Como em 25 + 3 = 28, as 25 entradas que eu allready suprimido ...

Alguém sabe o que está causando isso e como posso corrigir isso?

Foi útil?

Solução

É provavelmente porque você tem conjunto auto_increment ea consulta está retornando o mais alto id. Quando você excluiu os outros registros, você provavelmente não redefinir a contagem de auto incremento.

Outras dicas

Se você estiver usando auto_increment no MySQL registros, em seguida, apagar não vai diminuir o valor seguinte.

Você pode esvaziar uma tabela com TRUNCATE TABLE mytable -. Isso irá repor o valor

Você também pode alterar valor que auto-incremento acha que é o próximo valor a atribuir:

ALTER TABLE members AUTO_INCREMENT = 3;

Note que se você colocar em um valor que é menor que o valor máximo atual na coluna auto-incremento, ele vai alterar o valor para que MAX + 1. Para ver o que o próximo valor atual é definida como, faça o seguinte:

SHOW CREATE TABLE members;

No final da definição da tabela, ele vai mostrar "AUTO_INCREMENT = 26" ou o que quer que do valor atual.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top