在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条记录,汽车公司是4,删除1所以2记录,汽车公司应该是下一个值,所以它设置为3.
如上所述,这是不好的做法,你可能会最终混乱数据如果在执行这些auto_inc查询时未锁定表 - 牺牲主键顺序的性能似乎不明智!
在上面的查询'SELECT AUTO_INCREMENT FROM information_schema.TABLES WHERE TABLE_SCHEMA ='test'AND TABLE_NAME ='test';' 是信息_schema是我的数据库名? – diEcho
表架构和表名之间有什么区别?我写这两个时间相同的表名 – diEcho
架构是DB,名称是TABLE - information_schema是由MySQL自己生成的动态元数据本身 – Andy