consulta MySQL em PHP dá resultado errado óbvio
-
22-07-2019 - |
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árioTest: 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?
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.