Datenbankabfrage um zu prüfen, welcher User Eintrag gemacht hat.

Milo83

Benutzer
Beiträge
18
Hallo, ich bin momentan etwas aufgeschmissen

ich mochte eine Datenbankabfrage machen um zu prüfen welcher User den Eintrag gemacht hat und diesen mit dem aktuellen User abgleichen.

Die Situation ist folgende:

Auf der Webpage sieht man eine Liste mit Namen, jedem sind Attribute (unter anderem eine unsichtbare id) zugeordnet.
Meine DB Zeilen haben natürlich auch ID's die mit Autoincrement erstellt wurden, und dort wurde auch der Verfasser gespeichert.
Der Anwender kann eindeutig über $Session identifiziert werden.

Ich habe einen Button hinter die Webpage Zeile gemacht und möchte jetzt, dass per klick geprüft wird, ob der aktuell angemeldete Anwender auch der Verfasser in der DB war.

Meine Idee:
SELECT User FROM Bestand WHERE User = $_SESSION[Username] AND ID = $_GET[ID]

Mir schwirrt gerade der Kopf🤕
Für Verbesserungen, Korrekturen etc bin ich dankbar
 
Werbung:
Ist das PHP? Was genau für eine Anwendung hast du da? Wir kennen ja nichts, nichtmal die Tabellen oder Spalten noch können wir dir helfen in deiner Anwendung die richtigen Variablen zu nutzen.
 
Falls Du ein PHP-Problem hast, bist Du hier falsch.

Du kannst Nutzerverwaltung in der DB machen, so richtig wer was sehen darf, wer was ändern darf etc. Wenn man das richtig machen will, nimmt man eine bessere DB als MySQL und verwendet RLS (Row Level Security).

Aber ich glaube, Du willst was mit PHP machen und daher bist Du hier falsch.
 
Mir schwirrt gerade der Kopf
Wenn es schwirrt, musst Du etwas sortieren:
SELECT User FROM Bestand WHERE User = $_SESSION[Username] AND ID = $_GET[ID]

Das Statement ist offenbar ein Gemisch aus SQL und PHP, das so nicht funktioniert, weder tatsächlich noch theoretisch.
Mache eine Abfrage, die Dir innerhalb der DB das liefert, was Du wissen möchtest. Explizit:

SELECT User FROM Bestand WHERE User = 'Milo83' AND ID = 4711

und um es noch klarer zu machen, verwende ordentliche Spaltennamen und Aliase.
SELECT b.benutzer FROM Bestand b WHERE b.benutzer = 'Milo83' AND b.ID = 4711;

Nun wäre mal am Rande die Frage, was das Ergebnis für einen Nutzen hat?
Selektiere mir den Usernamen aus der Tabelle, wo der Username='Milo83' ist?

geht auch so in kürzer:
Select 'Milo83';


Weiter: Wenn Du eine Webanwendung entwickelst, musst Du Dir die Vorgehensweise klar sein.
Die Web App hat eine Sitzung (Session) zwischen Browser(Nutzer Login) und sich. Sie kann erstmal alles ausliefern, was sie ohne Datenhaltung "von sich aus weiß". Das Gehirn / Speicher ist die DB. Dorthin hat die Web App auch eine Session. Diese ist meist als ein Session Pool ausgelegt, also mehrere Verbindungen mit einer(1) DB Anmeldung, also einem Nutzer, der auf die DB zugreift. Der DB User und die Session zwischen Wep App und DB ist also etwas anderes als die (kurzzeitige) Verbindung zwischen Browser und Webapp, PHP Session versus DB Session, beide haben sehr wahrscheinlich unterschiedliche Nutzer.
In klassischen Client Server Architekturen ist das u.U. anders, das Benutzerlogin eines Programmes entspricht einem DB Benutzer und es gibt eine (meist) dauerhafte Verbindung zwischen Programm und DB mit einem echten DB Nutzer.

Die reine DB Abfrage von Dir lautet parametriert vielleicht so:
SELECT b.benutzer FROM Bestand b WHERE b.benutzer = :param_benutzer AND b.ID = :param_id;
wobei:
b.benutzer = tabellenspalte
param_benutzer = parameter, variabel
param_id = parameter, variabel

PHP muss die Parameter entsprechend befüllen, damit die Abfrage läuft.

Dies muss auch umgekehrt geschehen, wenn Einträge in die Tabelle eingefügt werden (Insert). Woher sollen sollst die Anmelde/Usernamen kommen?
Wenn Du mit einer SQL Console oder einem anderen Tool Deiner Wahl in der Lage bist, die Tabelle zu befüllen und abzufragen, dann überträgst Du es in PHP und ersetzt dort die variablen Teile der SQL Statements (Parameter)
 
Zuletzt bearbeitet von einem Moderator:
Werbung:
Danke euch allen,
an dem Tag, an dem ich die Frage gestellt habe habe ich Stunden lang auf den Bildschirm gestarrt und nur noch "Bratkartoffel" verstanden.
@dabadepdu vielen Dank für deine Mühen, langsam finde ich etwas mehr Zugang zu dem Thema DB.🤓
 
Zurück
Oben