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 № 1Para 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.