La consulta MySQL en PHP da un resultado obvio incorrecto
-
22-07-2019 - |
Pregunta
Estoy usando PHP y PHPMyAdmin para crear un sitio de perfil pequeño. Les doy a los miembros un número de identificación, en función del cual es el número más grande actualmente en la base de datos, +1
Hice 25 pruebas antes de obtener el script PHP donde quería que estuviera.
Luego eliminé esas 25 entradas usando PHPMyAdmin.
Pero ahora, cuando mi código PHP hace esto:
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];
}
Me sale el número equivocado.
Escenario de prueba: la tabla de la base de datos contiene 3 entradas, con las ID 1, 2 y 3.
Comienzo una sesión de depuración y pongo un punto de interrupción en el retorno $ record [0]
.
Verifico su contenido y en lugar de 3, que es el número más grande, es 28.
Como en 25 + 3 = 28, las 25 entradas que ya eliminé ...
¿Alguien sabe qué está causando esto y cómo puedo solucionarlo?
Solución
Probablemente se deba a que ha establecido auto_increment y la consulta está devolviendo la identificación más alta. Cuando eliminó los otros registros, probablemente no restableció el conteo de incremento automático.
Otros consejos
Si está utilizando auto_increment
en MySQL, eliminar registros no disminuirá el siguiente valor.
Puede vaciar una tabla con TRUNCATE TABLE mytable
; esto restablecerá el valor.
También puede cambiar el valor que el incremento automático cree que es el siguiente valor para asignar:
ALTER TABLE members AUTO_INCREMENT = 3;
Tenga en cuenta que si ingresa un valor que es menor que el valor máximo actual en la columna de incremento automático, cambiará el valor a ese MAX + 1. Para ver cuál es el siguiente valor actual, haga lo siguiente:
SHOW CREATE TABLE members;
Al final de la definición de la tabla, mostrará " AUTO_INCREMENT = 26
" o lo que sea su valor actual.