online 1
gast (50)

/ Forum / Skripte(PHP,ASP,Perl...)

Skripte(PHP,ASP,Perl...)Skripte(PHP,ASP,Perl...)

Fragevon speedxy vom 13.10.2019, 13:14 Options

Lösung

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

Lö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.

Ähnliche Themen

Abfragen - Access
gast64  30.01.2007 - 155 Hits - 2 Antworten

Ausfüllen mit Increment 7 (anstatt defalt 1)
user3  09.03.2007 - 78 Hits - 4 Antworten

zentrales Formular erstellen, das danach Abfragen einschränkt
Solu  26.11.2007 - 123 Hits - 7 Antworten

Sprache in VBA abfragen : wo /wie finde ich Setup?
user3  26.06.2008 - 78 Hits - 2 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Mon Jan 26 01:23:17 2026