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?

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top