Ich versuche, Daten aus meiner SQL-Tabelle mit php eindeutig auf die ID der Sitzung zu ziehen, aber ich bekomme nur die Position, dass der Benutzer ist, wenn ich etwas aus Echo!
%Vor%wird angezeigt als:
wenn ich mich mit der fünften Position in der Datenbank anmelde!
Der Grund, warum Sie 5 bekommen, ist für diesen Code:
%Vor%ist, dass der Wert von $ _SESSION ['user_id'] 5 ist. Nach der Zuweisung ist $ user_info nun 5. Da die $ _SESSION ['user_id'] nicht auf ein Array gesetzt ist, wie es Ihre Absicht zu sein scheint . Das Ergebnis ist, dass $ user_info als Zeichenfolge verwendet wird und ['Vorname'] zu [0] ausgewertet wird. Wenn Sie möchten, können Sie die ID 5 bis 54 usw. aktualisieren. Sie erhalten immer das erste Zeichen Ihrer ID.
Um dies zu korrigieren, versuchen Sie, die letzten 2 Zeilen vor der Rückgabe in Ihrer Benutzerdatenfunktion zu ändern:
%Vor%zu:
%Vor%Was ich sehe, dass Sie in dieser Zeile sind
%Vor%Sie verwenden "firstname", während in der Datenbank als "first_name" benannt wird, siehe Unterstrich
%Vor%Lassen Sie mich wissen, ob sich das löst oder nicht, denn auch ich möchte seine Antwort wissen
Aus der Erfahrung, große Codebasen in PHP zu erstellen, und wenn Sie die Anwendung erweitern, werden Sie feststellen, dass Sie immer mehr Daten aus der Benutzertabelle verwenden. Außerdem sollte die Tabelle nur die wichtigsten Daten enthalten, die gemeinsam verwendet werden, und Sie möchten NICHT mehr als 1 oder 2 Abfragen an die Tabelle der Benutzer pro Seitentreffer senden, da dies bald zu einem Flaschenhals werden kann. Aus diesem Grund speichern Sie besser alle Daten Daten (große Felder in eine andere Tabelle verschieben oder Felder selten verwendet). Speichern Sie dann den gesamten Benutzerdatensatz in einer Sitzung, was bedeutet, dass jede Funktion, Klasse usw. ihn als Superglobal verwenden kann, und Sie können ihm genug vertrauen, um ihn in der gesamten Anwendung zu verwenden, ohne die Benutzertabelle immer wieder neu abfragen zu müssen.
Ich habe ein funktionierendes Beispiel geschrieben (indem ich Ihre db-Tabellenstruktur verklagt habe) und habe es durchweg erklärt, warum ich es so gemacht habe, wie ich es getan habe, und einige Punkte, die Sie vielleicht in Erwägung ziehen.
%Vor%P.S. Vielleicht möchten Sie auch LIMIT in Ihren SQL-Abfragen verwenden, da LIMIT 1 in der obigen Abfrage mysql anweist, dass es die Suche beenden kann, nachdem es ein Ergebnis gefunden hat - und Sie sollten einen Index für diese Spalte haben (vorzugsweise einen Primärindex oder einen eindeutigen Index) um es blitzschnell zu halten (oder zumindest am Anfang sowieso & lt; & lt;).