[MySQL] Letzten Datensatz (ID) auslesen

mr_floppy

Mitglied
Hallo,

ich will die letzte ID auslesen um einen neuen Datensatz mit einer ID + 1 zu speichern. Zu erst hab ich es über eine Schleife gemacht, was nicht funktioniert hat. Es wurde irgendwie immer eine falsche ID ausgelesen, weswegen die ID´s doppelt vorkammen.

1-2-2-3-4usw..

Dann hab ich die SuFu mal bisschen genervt und bin auf eine andere Möglichkeit gestoßen, nämilch:

PHP:
$lastid = mysql_fetch_row(mysql_query("SELECT max(id) FROM content"));
$lastid[1] = $lastid[0] + 1;
$id = $lastid[1] + 1;
$query = "INSERT INTO cats (id, cat) VALUES (\"$id\", \"$catname\")";
$sql = mysql_query($query);

Leider funktioniert das auch nicht. Ich bekomme einen Fehler und statt der ID wird "Array" als ID gespeichert.

Fehlermeldung:
Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\xyz\index.php on line 32
Deine ID ist 1...Kategorie TestKategorie wurde erstellt

Wie kann ich das lösen?

edit: Zuerst hatte ich es so:

PHP:
$query = "SELECT id FROM cats";
$sql = mysql_query($query);	
while ($data = mysql_fetch_object($sql))
{
         $id = $data-> id;
}

Was ist denn daran falsch? Warum zählst der bei der Schleife nicht von 1- x sondern gibt die ID "durcheinander" aus?

MfG
 
Zuletzt bearbeitet:
Wie wäre es, wenn du die Spalte auf Auto Increm stellst? So wird automatisch die nächste höhere Zahl genommen.

Sowas sollte auch gehen:

SQL:
INSERT INTO cats (id, cat) VALUES (
("SELECT max(id) FROM content")+1,
 "Name")

PHP:
$query = "SELECT id FROM cats";
$sql = mysql_query($query);	
while ($data = mysql_fetch_object($sql))
{
         $id = $data-> id;
}

Was ist denn daran falsch? Warum zählst der bei der Schleife nicht von 1- x sondern gibt die ID "durcheinander" aus?

Die Ids sind scheinbar durcheinander in der Tabelle gespeichert.
SQL:
SELECT id FROM cats ORDER BY id
So bekommst du die Ids in der Reihenfolge von klein nach groß.
 
Zuletzt bearbeitet von einem Moderator:
Wie wäre es, wenn du die Spalte auf Auto Increm stellst?

Hab ich jetzt gemacht, es funktioniert perfekt. Danke! ;)
Den Rest hab ich mir auch mal aufgeschrieben.Der erste query den du gepostet hast ist interessant, wusste nicht, dass man als Wert noch mal einen SELECT angeben kann.


*erledigt*


MfG
 

Neue Beiträge

Zurück