3

我正在使用 PHP 和 PHPMyAdmin 创建一个小型个人资料网站。我给成员一个 ID 号,基于它是数据库中当前最大的数字,+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。

我开始调试会话并在 return 上放置一个断点$record[0]。我检查了它的内容,最大的数字不是 3,而是 28。

如 25+3=28,我已经删除的 25 个条目...

有人知道是什么原因造成的,我该如何解决?

4

3 回答 3

6

这可能是因为您设置了 auto_increment 并且查询返回了最高 id。当您删除其他记录时,您可能没有重置自动增量计数。

于 2009-03-14T21:21:35.423 回答
5

如果您auto_increment在 MySQL 中使用,则删除记录不会减少下一个值。

您可以清空一个表TRUNCATE TABLE mytable- 这将重置该值。

于 2009-03-14T21:20:31.337 回答
3

您还可以更改自动增量认为是下一个要分配的值的值:

ALTER TABLE members AUTO_INCREMENT = 3;

请注意,如果您在自动增量列中输入的值小于当前最大值,它会将值更改为 MAX+1。要查看当前的下一个值设置为什么,请执行以下操作:

SHOW CREATE TABLE members;

在表定义的末尾,它会显示“ AUTO_INCREMENT = 26”或者它的当前值。

于 2009-03-14T21:39:24.770 回答