/ / mostrar el valor de autoincremento de zerofill sin firmar sin cero inicial - php, mysql

mostrar el valor de autoincremento de zerofill sin firmar sin cero inicial - php, mysql

mi clave primay es user_id que es auto incremant UNSIGNED ZERO FILL, quiero mostrar user_id en una página sin cero inicial (significa 1 en lugar de 0000000001) .. ¿Cómo podemos hacer eso en PHP o en MySQL? una pregunta más...

Si elimino el último registro (deje user_id = 21) que tenga el ID más alto de esa tabla, entonces podemos ajustar el valor de incremento automático a 21 en lugar de 22 de esa tabla.

Respuestas

2 para la respuesta № 1

Para visualizar en PHP sin ceros iniciales:

echo (int) $val;

Para establecer el valor auto_increment (esto no es una buena práctica, ¡debe dejar que MySQL maneje las claves primarias por usted!):

mysql> CREATE TABLE test( id INTEGER AUTO_INCREMENT, data TEXT, PRIMARY KEY id(id) );
Query OK, 0 rows affected (0.05 sec)

mysql> INSERT INTO test VALUES (1,"23"),(2,"32"),(3,"3232");
Query OK, 3 rows affected (0.00 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql> SELECT AUTO_INCREMENT FROM information_schema.TABLES WHERE TABLE_SCHEMA = "test" AND TABLE_NAME = "test";
+----------------+
| AUTO_INCREMENT |
+----------------+
|              4 |
+----------------+
1 row in set (0.00 sec)

mysql> SELECT MAX(id) FROM test;
+---------+
| max(id) |
+---------+
|       3 |
+---------+

1 row in set (0.00 sec)

Luego borre de la prueba, verifique si el auto_increment es uno por encima del máximo (id) en PHP, y si no:

mysql> ALTER TABLE test AUTO_INCREMENT=3;
Query OK, 3 rows affected (0.05 sec)
Records: 3  Duplicates: 0  Warnings: 0

Como tenía 3 registros, auto inc era 4, eliminó 1, entonces 2 registros, auto inc debería ser el siguiente valor, así que configúrelo en 3.

Como arriba, esto no es una buena práctica y podríatermine con datos desordenados si no bloquea las tablas mientras realiza estas consultas auto_inc; sacrificar el rendimiento por el orden de la clave principal no parece sensato.