Immer neuster Eintrag aus SQL auf id bezogen

MarkusEbeling

Grünschnabel
Hallo!

In meiner Datenbank werden in einer Tabelle die Namen der Benutzer abgespeichert. Wenn der Benutzer seinen Namen ändert wird nicht die Spalte geändert sondern eine neue Spalte eingefügt.

user_id | user_name | timestamp
1 | Peter | 1584598654
2 | Helmut | 0154875489
3 | Hanna | 1254875987
1 | Neupeter | 5498754784

Jetzt muss ich bei der Anmeldung natürlich daraf achten das immer nur der neuste Benutzername überprüft wird. Eine user_id habe ich im Anmeldescript natürlich noch nicht. Diese wird natürlich erst nach erfolgreicher Überprüfung der Anmeldung zugewiesen.

Wie kann die SQL-Abfage aussehen ?

PHP:
$user_name =
  mysqli_fetch_object
 (mysqli_query($database, "SELECT user_name

                      FROM user

                     WHERE user_name = $_POST['user_name']"));

Die o.g. Abfrage reicht natürlich nicht aus!

Gruß und Danke
 
1) Die POST-Variable sollte auf keinen Fall ungeprüft in das SQL-Statement übernommen werden. Thema SQL Injection
2) SELECT TOP 1 user_name FROM user WHERE user_name='[hier die gepüfte Variable einsetzen]' ORDER BY timestamp DESC
oder
2) SELECT user_name FROM user WHERE user_name='[hier die gepüfte Variable einsetzen]' ORDER BY timestamp DESC LIMIT 1

Insgesamt würde ich aber erst abfragen, ob der User existiert und im positiven Fall mit der ID weiterarbeiten.

Nachtrag: Yaslaw hat natürlich Recht, ich habe Hochkommata ergänzt.
 
Zuletzt bearbeitet:
Zurück