我的primay键是user_id,它是auto incremant UNSIGNED ZERO FILL
,我想在不带前导零的页面上显示user_id(表示1而不是0000000001)。
我们怎样才能在php或mysql中做到这一点
还有一个问题......
如果我删除了最后一个记录(让user_id = 21),那个表的id最高,那么我们可以将自动增量值调整为21而不是该表的22个。
答案 0 :(得分:2)
在不带前导零的PHP中显示:
echo (int) $val;
要设置auto_increment值(这不是一个好习惯,你应该让MySQL为你处理主键!):
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)
然后从测试中删除,检查auto_increment是否高于PHP中的max(id),如果不是:
mysql> ALTER TABLE test AUTO_INCREMENT=3;
Query OK, 3 rows affected (0.05 sec)
Records: 3 Duplicates: 0 Warnings: 0
由于您有3条记录,auto inc为4,删除1所以2条记录,auto inc应该是下一个值,因此将其设置为3。
如上所述,这不是一个好的做法,如果你在执行这些auto_inc查询时没有锁定表格,你可能会得到凌乱的数据 - 牺牲主键顺序的性能似乎不合理!