我正在使用PHP和PHPMyAdmin创建一个小型的网站。 我给会员一个身份证号码,根据该号码是目前数据库中最大的号码,+1
在我得到PHP脚本之前,我做了25次测试。
然后我使用PHPMyAdmin删除了这25个条目。
但现在,当我的PHP代码执行此操作时:
function getLatestID() {
$query = "SELECT max(member_id) FROM members";
$result = @mysql_query($query) or showError("unable to query database for user information");
if (!($record = mysql_fetch_array($result))) return null;
return $record[0];
}
我得错了号码。
测试场景:数据库表包含3个条目,ID为1,2和3。
我启动调试会话并在返回$record[0]
上放置一个断点。
我检查它的内容,而不是3,这是最大的数字,它是28。
在25 + 3 = 28中,我已经删除的25个条目......
有人知道造成这种情况的原因以及如何解决这个问题吗?
答案 0 :(得分:6)
这可能是因为你设置了auto_increment并且查询返回了最高的id。当您删除其他记录时,您可能没有重置自动增量计数。
答案 1 :(得分:5)
如果您在MySQL中使用auto_increment
,则删除记录不会降低下一个值。
您可以使用TRUNCATE TABLE mytable
清空表格 - 这会重置该值。
答案 2 :(得分:3)
您还可以更改自动增量认为是要分配的下一个值的值:
ALTER TABLE members AUTO_INCREMENT = 3;
请注意,如果您输入的值小于自动增量列中的当前最大值,则会将值更改为MAX + 1。要查看当前下一个值的设置,请执行以下操作:
SHOW CREATE TABLE members;
在表格定义的最后,它会显示“AUTO_INCREMENT = 26
”或其当前值。