Abziehen von Daten aus SQL-Tabelle mit PHP mit Sitzungen

9

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:

5 5

wenn ich mich mit der fünften Position in der Datenbank anmelde!

    
thedullmistro 18.10.2012, 19:20
quelle

7 Antworten

3

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%     
Tash Pemhiwa 23.10.2012, 15:05
quelle
2
%Vor%

sollte

sein %Vor%     
StaticVariable 18.10.2012 19:23
quelle
0

für mich scheint es, als hätten Sie vergessen, Daten in der Sitzung zu aktualisieren. Sagen wir hier:

%Vor%

hoffe, dass es Ihnen hilft, Ihre Probleme zu lösen.

    
chmeliuk 22.10.2012 06:01
quelle
0

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

    
Ravi Kumar 22.10.2012 06:48
quelle
0

Kann Ihnen bei einigen Änderungen in Ihrem Code helfen

%Vor%     
Parag Chaure 25.10.2012 08:28
quelle
0
%Vor%

und

%Vor%

und

%Vor%     
Arun Killu 25.10.2012 09:09
quelle
0

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;).

    
VBAssassin 25.10.2012 21:07
quelle

Tags und Links