题
我在使用PHP和phpMyAdmin来创建一个小的个人资料的网站。 我给成员的ID号码,基于这是目前在数据库中的最大数,1
我做了25次试验之前,我得到了PHP脚本,我希望它是。
我然后使用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。当你删除其他记录,你可能没有重置自动增量次数。
其他提示
如果您正在使用auto_increment
在MySQL中,然后删除记录将不会减少下一个值。
可以清空一个表与TRUNCATE TABLE mytable
- 这将重置值
您还可以更改自动递增认为是下一个值来分配值:
ALTER TABLE members AUTO_INCREMENT = 3;
请注意,如果你把在小于在自动增量列的当前最大值的值,它会改变的值到MAX + 1。要了解当前的下一个值设置为,这样做:
SHOW CREATE TABLE members;
目前的表定义的末尾,就会显示“AUTO_INCREMENT = 26
”或任何它的电流值。
不隶属于 StackOverflow