2010-03-15 3 views
1

my primay key is user_id, который является auto incremant UNSIGNED ZERO FILL, я хочу отображать user_id на странице без ведущего нуля (означает 1 вместо 0000000001) .. как мы можем это сделать в php или в mysql Еще один вопрос ...отображение значения неповторного значения нуля без начального нуля

Если я удалю последнюю запись (пусть user_id = 21), у которой есть самый высокий идентификатор этой таблицы, тогда мы можем отрегулировать значение автоматического прироста до 21 вместо 22 этой таблицы.

ответ

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 одним из максимальных (id) в PHP, а в противном случае:

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 - жертвуя производительность для первичного заказа, не кажется разумным!

+0

в приведенном выше запросе 'ВЫБРАТЬ AUTO_INCREMENT FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'тест' И TABLE_NAME = 'тест',' информация _schema мое имя базы данных ?? – diEcho

+0

Какая разница между таблицей схемы и именем таблицы? я пишу и время с тем же именем таблицы – diEcho

+0

схема - это DB, имя TABLE - information_schema - это динамические метаданные, сгенерированные MySQL о себе – Andy

Смежные вопросы