PHP中的MySQL查询给出了明显错误的结果

时间:2009-03-14 21:14:47

标签: php mysql phpmyadmin

我正在使用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个条目......

有人知道造成这种情况的原因以及如何解决这个问题吗?

3 个答案:

答案 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”或其当前值。