繁体   English   中英

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

[英]MySQL query in PHP gives obvious wrong result

我正在使用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。

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

在25 + 3 = 28中,我已经删除了25个条目...

有谁知道是什么导致了这个以及我如何解决它?

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

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

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

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

ALTER TABLE members AUTO_INCREMENT = 3;

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

SHOW CREATE TABLE members;

在表定义的最后,它将显示“ AUTO_INCREMENT = 26 ”或其当前值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM