2011-05-02 67 views
0

我在我的phpmyadmin中有一张表,其中包含将在网站上发布的项目的一些数据。我将这些行手动添加到数据库。我想显示已发布项目的编号。第一个是'1',第二个是'2'等。但是,如果我使用自动增量并删除第二行,则两者之间会有间隙。解决这个问题的建议?ID在phpmyadmin中

我用PHP来显示行的ID,但是当第二个被删除时,它显示了差距。

该结构以名为'id'的列开始,该列具有主键和自动增量。

+4

你试图达到的目标是违背主键。 – naiquevin 2011-05-02 11:30:31

+0

这是不可能的,正如@naiquevin所说,它基本上违背了主键的用途。点或主键是每个记录具有唯一的ID。不能有两个具有相同ID的记录 - 这会破坏外部引用和依赖关系。 – 2011-05-02 11:40:19

+0

可能的重复[如果我重置MYSQL中的自动增量...它不会弄乱任何东西,对不对?](http://stackoverflow.com/questions/2085835/if-i-reset-the-auto - 增加在mysql-it-wont-mess-up-anything-right) – 2011-05-02 11:41:33

回答

3

你不想那么做!期。你会创造很多问题。 你真正的问题是在别的地方。你认为没有你的id之间的差距将解决它。以不同的方式解决该问题,但只保留自动增加的ID列。正因为这个原因正在实施。自动增量可以确保您永远不会混淆两个条目,如果有差距并不重要,您可以随时排序,随时可以识别!如果您需要漂亮的直线数字,请将条目存储在数字数组中,然后使用键进行编号。或者使用for循环遍历您的条目,并使用增量器进行编号,或者在数据库中引入一个订单列。

3

解决此问题的建议?

它没有坏!

您不应该关心或考虑数据库ID作为开发人员,它是为了内部使用和数据完整性。

如果你真的想用无间隙递增的数字,在查询中使用这样的:

LIMIT 1 OFFSET X 

X是在你的URL中的“ID”(不是真正的ID)。

但是,请听这里建议反对这一点的人。这不是一个好主意,相信我,没有人会关心甚至注意到前向数据库ID。