Frage

Ich bin mit PHP und phpMyAdmin ein kleines Profil Website zu erstellen. Ich gebe eine ID-Nummer Mitglieder, basierend auf dem die größte Zahl derzeit in der Datenbank, +1

habe ich 25 Tests, bevor ich den PHP-Skript, wo ich es haben wollte.

ich dann gelöscht, diese 25 Einträge mit phpMyAdmin.

Aber jetzt, wenn mein PHP-Code tut dies:

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];
}

Ich erhalte die falsche Nummer.

Testszenario. Die Datenbanktabelle enthält 3 Einträge, mit IDs 1, 2 und 3

Ich beginne eine Debug-Sitzung und einen Haltepunkt setzen auf die Rückkehr $record[0]. Ich überprüfe seinen Inhalt und anstelle von 3, die die größte Zahl ist, es ist 28.

Wie in 25 + 3 = 28, die 25 Einträge, die ich allready gelöscht ...

Weiß jemand, was dies verursacht und wie kann ich es beheben?

War es hilfreich?

Lösung

Es ist wahrscheinlich, weil Sie festgelegt haben auto_increment und die Abfrage mit der höchsten ID zurückkehrt. Wenn Sie die anderen Datensätze gelöscht, werden Sie wahrscheinlich nicht die automatische Schrittzahl zurückgesetzt hat.

Andere Tipps

Wenn Sie auto_increment in MySQL dann Löschen von Datensätzen verwenden sind nicht um den nächsten Wert verringern.

Sie können eine Tabelle mit TRUNCATE TABLE mytable leeren -. Dies den Wert zurückgesetzt

Sie können auch Wert ändern, die Autoinkrement denkt, dass der nächste Wert zuweisen:

ALTER TABLE members AUTO_INCREMENT = 3;

Beachten Sie, wenn Sie in einem Wert gesetzt, der kleiner ist als der aktuelle Maximalwert in der Autoinkrement-Spalte ist, wird es den Wert dieser MAX ändern + 1. Um zu sehen, was der aktuelle nächste Wert auf, dies zu tun:

SHOW CREATE TABLE members;

Am Ende der Tabellendefinition, wird es zeigen „AUTO_INCREMENT = 26“ oder was auch immer es ist aktuelle Wert.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top