![](/img/trans.png)
[英]MySQL php query appears to be returning wrong result (probably obvious)
[英]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.