Nächste Auto-Increment-ID mit PHP abfragen
Hallo!
Ich habe ein Script und würde gern die nächste Auto-Increment-ID anzeigen, damit der Benutzer weiß, welche ID der nächste Datensatz hat und diese gegebenenfalls mit "Alter Table" o.Ä. anpassen kann.
Daher meine Frage: Wie ist es möglich, mit PHP die nächste AutoIncrement-ID abzufragen? Eine Möglichkeit wäre, dass man einen Datensatz einfügt, die ID des Datensatzes mit mysql_insert_id() anfragt, diesen dann wieder löscht und die Auto_Increment-ID mit "Alter Table" wieder um eins verringert. Das ist aber total unschön und ziemlich Performancelastig. Auch phpMyAdmin zeigt ja im Menü "Optionen" zu jeder Tabelle defn nächsten AutoIncrement-Wert an, von daher müsste es ja doch möglich sein, diesen Wert auszulesen.
Danke schonmal
Speedxy
Antwort schreiben
Antwort 1 von Supermax vom 13.10.2019, 13:58 Options
Eine Möglichkeit wäre, einen leeren Datensatz anzulegen, und diesen dann mit den vom User eingegebenen Daten zu aktualisieren. Auf diese Art ist halbwegs sichergestellt, daß bei gleichzeitigen Zugriff mehrerer User die zurückgegebene ID nicht der korrekten ID entspricht.
Also zuerst ein
mysql_query('INSERT INTO tabelle VALUES (.....)');
dann mit
$id = mysql_insert_id();
die ID auslesen und dem User im Formular anzeigen.
Beim POST der Formulardaten erfolgt dann ein
UPDATE tabelle SET .... WHERE id = $id
Die ID muß dabei natürlich im POST wieder mit übergeben werden (oder in der Session gespeichert).
Antwort 2 von speedxy vom 13.10.2019, 20:01 Options
Danke für Deine Antwort.
Es folgt ja aber nicht zwangsweise ein Eintrag nach dem Abfragen der ID. Das ist ja das Problem. Ich möchte ja nur auf einer Übersichtsseite die nächste ID anzeigen, die zugewiesen würde, wenn ein Eintrag erfolgen würde, damit diese gegebenenfalls angepasst werden kann.
Antwort 3 von Supermax vom 13.10.2019, 21:20 OptionsLösung
Mit
SHOW TABLE STATUS LIKE '[i]tablename[i]'
kannst du verschiedene Informationen über die Tabelle
tablename abfragen, unter anderm auch den nächsten Auto-Increment-Wert (siehe
hier).
Falls sichergestellt ist, daß immer nur ein User zugleich auf die Datenbank bzw. das Frontend zugreift, ist das eine brauchbare Methode. Andernfalls kann es passieren, daß z.B. ein anderer User währenddessen einen Datensatz hinzufügt und die angezeigte Autp-Increment-ID dann nicht mehr stimmt.