Letzte ID aus PHP-Tabelle bekommen

JackAv

Grünschnabel
Hallo kann mir wer helfen,
ich bin daran ein registrierungsformular zu erstellen. Dabei soll bei jeder registrierung die letzte ID ausgelesen werden.
Ich hab zwar schon einige sachen durch suchen gefunden aber da hab ich nicht gewusst wie ich beispielsweise mysql_insert_id auf die jewailige tabelle mit dem feld id anwenden kann
Also ich braüchte die letzte id bzw nummer aus => $Datenbank/user/id
kann mir da bitte wer helfen?
 
Hallo

du brauchst ein Feld mit auto_increment. Nachdem du einen MySQL-INSERT-Query an die Datenbank geschickt hast, kannst du mit mysql_insert_id() die betreffende ID erhalten. Alternativ:
PHP:
$result = mysql_query("SELECT `ID` FROM table ORDER BY id DESC LIMIT 0,1");
$row = mysql_fetch_array($result);
echo "Letzte ID: {$row[0]}";
 
1) Die Alternative ist nicht gut. mysql_insert_id() gibt die ID des Datenstatzes zurück das in deiner Datenbanksession eingefügt wurde.
Deine Lösung gibt die letzte id zurück - ev. diejenige die jemand anderes in einem Bruchteil einer Sekunde nach dir eingefügt hat.

2) wenn man nur ein Feld aus einer bestimmten Zeile haben will, muss man nicht mysql_fetch_array() durchgehen. dazu gibt es mysql_result()
PHP:
$result = mysql_query("SELECT `ID` FROM table ORDER BY id DESC LIMIT 0,1");
echo "Letzte ID: ". mysql_result($result, 0);
Was schneller ist, weiss ich grad nicht
 
Zuletzt bearbeitet:
1) Die Alternative ist nicht gut. mysql_insert_id() gibt die ID des Datenstatzes zurück das in deiner Datenbanksession eingefügt wurde.
Deine Lösung gibt die letzte id zurück - ev. diejenige die jemand anderes in einem Bruchteil einer Sekunde nach dir eingefügt hat.

2) wenn man nur ein Feld aus einer bestimmten Zeile haben will, muss man nicht mysql_fetch_array() durchgehen. dazu gibt es mysql_result()
PHP:
$result = mysql_query("SELECT `ID` FROM table ORDER BY id DESC LIMIT 0,1");
echo "Letzte ID: ". mysql_result($result, 0);
Was schneller ist, weiss ich grad nicht
AH danke das schonmal interessant aus
dann müsste es so funktionieren:
PHP:
$lastid = mysql_query("SELECT 'id' FROM `$mysqlconnect[Database]`.`user` LIMIT 0 , 1");
Bekomm aber leider nur "Resource id #1" unabhängig davon wie der letztze wert war.
Was halt auch möglich wär wenn ich mir um die ids zu vegeben eine art counter bastel, aber das mit der letzten id gefällt mir halt viel besser.
 
Zuletzt bearbeitet:
Hi,

du kannst die Felder nicht einfach "nur" mit mysql_query() abrufen. Diese Funktion liefert nur eine Resource zurück, die du mit mysql_fetch_assoc() oder ähnliche Funktionen dann abrufen kannst.
Folgendes sollte also seinen Zweck erfüllen:

PHP:
$res = mysql_query("SELECT 'id' FROM `" . $mysqlconnect['Database'] . "`.`user` LIMIT 0 , 1");
$ds = mysql_fetch_assoc($res);

$lastid = $ds['id'];

Gruß
BK
 
AH danke das schonmal interessant aus
dann müsste es so funktionieren:
PHP:
$lastid = mysql_query("SELECT 'id' FROM `$mysqlconnect[Database]`.`user` LIMIT 0 , 1");
Bekomm aber leider nur "Resource id #1" unabhängig davon wie der letztze wert war.
Was halt auch möglich wär wenn ich mir um die ids zu vegeben eine art counter bastel, aber das mit der letzten id gefällt mir halt viel besser.
Nein. Ich hab dir ein Beispiel gemacht. Schau es dir bitte auch an.
 
1) Die Alternative ist nicht gut. mysql_insert_id() gibt die ID des Datenstatzes zurück das in deiner Datenbanksession eingefügt wurde.
Deine Lösung gibt die letzte id zurück - ev. diejenige die jemand anderes in einem Bruchteil einer Sekunde nach dir eingefügt hat.

Das ist mir durchaus bewusst. Aber soweit ich es in seiner Frage lesen konnte, soll die "letzte" id ausgelesen werden. Und das macht mein Code nunmal :)
 
Danke Bratkartoffel,
aber ich bekomm leider immer nur "id" ausgegeben und wenn garnix in der tabelle steht kommt auch garnix raus -.-
also hier mal die mysql daten:
//CODE REMOVED\\



EDIT:
hallo yaslaw
leider komm ich mit deinem beispiel nicht zurecht oder es funktioniert nicht, danke trotzdem für dein Bemühen

EDIT: Ein netter kumpel hat mir geholfen. Jetzt gehts.
 
Zuletzt bearbeitet:
Zurück