我的db表看起来像这张照片。 http://prntscr.com/22z1n最近我创建了delete.php页面。它工作正常,但当我删除第21个用户下一个注册用户得到第24个ID而不是21.是否可以将新注册的用户信息放到第一个空行? (在这种情况下第21行)
在我的注册表格中,新注册的用户可以在注册后写下现有用户的姓名,并与他们成为朋友。为了这个友谊,我有另一个表关联新注册用户和现有用户的id。为此,我在注册时使用mysql_insert_id来获取新用户的id。但是在下一次注册过程中删除第21行后,mysql_insert_id给了我21号,但是存储在第24行。并为新用户提供关联表21。我想解决这个问题
答案 0 :(得分:1)
您上次发布此问题时收到了答案。 MySQL维护一个内部计数器,每次将新行插入带有自动增量列的表时,该计数器都会递增。删除行时,增量值不会下降。
为了让事情按照你想要的方式工作,你需要避免使用MySQL自动增量,并实现自己的解决方案来创建和增加ID。
答案 1 :(得分:0)
DROP
您所在的字段auto_incrementing
ALTER
表格再次ADD
字段具有相同的属性
所有现有行都重新编号,下一个auto_increment编号将等于行数加1
警告强>:
你真的没有理由要这样做或should
这样做!如果你在任何地方都有这些id的引用,我知道你从早期的问题中做过 - 这可以打破每一个链接。
答案 2 :(得分:0)
mysql_insert_id()
是一个非常糟糕的方法来获取你的身份。您始终可以设置表格的auto_increment
值,但我不会建议。您应始终根据某些唯一值执行插入的最新记录SELECT
,并按标识DESC
对其进行排序,同时将其限制为一个结果。不要使用mysql_insert_id()
。
答案 3 :(得分:0)
没有区别 - mysql_insert_id
将返回最后插入行的自动增量ID。如果该行获得ID 24,则mysql_insert_id
将返回24。
但是,您可以更改下一个值自动增量将导致它。阅读here。