MySQL Datenbank Spalte auslesen und in php variable speichern?

3 Antworten

Wie die anderen schon erwähnten kannst du alle Spalten in einem Array speichern. Du kannst dann außerdem jede einzelne Spalte über diesen Array abrufen.


Das Passwort sollte möglichst verschlüsselt sein. Ich mach das immer mit MD5. Soll unsicher sein, aber das ist quatsch. Du kannst auch SHA2 nehmen, ist völlig egal.

<?php
$geheimerString = "sdfkojf894w30&/§=njdfö";

if(isset($_POST["login_mail"]))
{
  $mail = mysqli_real_escape_string(db(),$_POST["login_mail"]);
  $pw = mysqli_real_escape_string(db(),$_POST["login_passwort"]);
  $pw = md5($pw.$geheimerString);
  $getUser = mysqli_query(db(),"SELECT * FROM user WHERE mail = '".$mail."' AND passwort = '".$pw."'");
  if(mysqli_num_rows($getUser) == 0)
  {
    // USER NICHT GEFUNDEN BZW DATEN FALSCH
  }
  else
  {
     // USER GEFUNDEN BZW DATEN SIND KORREKT
     $user = mysqli_fetch_assoc($getUser);
  }

In der Variable "$user" sind jetzt alle Spalten des Users mit den angegebenen Daten gespeichert.
Damit diese Daten auch auf anderen Seiten aufrufbar sind, solltest du die UserID in einer Session speichern und in einer globalen Datei per query in einer Variable speichern, damit du auf jeder Seite überprüfen kannst, ob der User angemeldet ist.
Die Session speicherst du so:


<?php
session_start();

$_SESSION["USER_ID"] == $user["id"];
?>

Die Funktion "session_start();" sollte in jeder deiner Dateien als Erstes stehen. Somit ist gewährleistet, dass du auf jeder Seite Zugriff auf die Daten des angemeldeten Users hast.
Der Befehl, der darunter steht, gehört in die Datei, die die POST Übergaben auswertet (Die LOGIN-Datei).
Undzwar so:



else
{
// USER GEFUNDEN BZW DATEN SIND KORREKT
$user = mysqli_fetch_assoc($getUser); $_SESSION["USER_ID"] == $user["id"];
}



mrGalileo  19.07.2017, 13:27

Du kannst nun einzelne Spalten des angemeldeten Users zum verwerten aufrufen.
Undzwar so:

<?php
$userName = $user["name"];
$userMail = $user["mail"];
$userBIO = $user["bio"];

Usw..
0

Eine Spalte kann aus 0 bis N Datensätzen bestehen. Deine Variable müsste dann eine Liste, Array (was in php möglich ist weiss ich nicht, da ich nicht mit php auskenne) mit Elemtenten vom Datentyp = Spalte sein um alle Werte  speichern zu können.

LkLp1082 
Fragesteller
 18.07.2017, 11:05

Wenn du dich nicht mit Php auskennst dann lass doch dir Antwort

0
Brainchild  18.07.2017, 11:13
@LkLp1082

Viele Programmiersprachen haben ähnliche/gleiche Datentypen. Ich habe viele Programmiersprachen gelernt und weiss, das man vieles sprachenunabhängig (nicht konkret) beantworten kann. Ich wollte dir nur helfen. Konkrete Lösungen zum abschreiben kann ich aber nicht liefern. Helfen kann es trotzdem.

4

is etwas undeutlich was du willst. du kannst die spalte auslesen und in nem array speichern - dann hast nur eine variable. du kannst se aber auch als string verketten.

wenn mehrere informationen in einer zelle sind dann kannst du diese mit substr, explode trennen


btw. allerdings - wen du ne db-connection aufmachst und dir deine db-infos holst - haste ja schon nen array den du weiterverarbeiten kannst...

was haste denn vor damit?

LkLp1082 
Fragesteller
 18.07.2017, 11:06

ein loginsystem

0
tavkomann  18.07.2017, 11:22
@LkLp1082

Wo muss man denn bei einem Loginsystem eine ganze Spalte auslesen? Wie sieht die SQL-Tabelle denn genau aus und was willst du genau in Abhängigkeit welcher Daten auslesen?

1
DodgeRT  18.07.2017, 11:30
@LkLp1082

dein reicht doch n einfach sql mit den werten die derjenige eingegeben hat

0
LkLp1082 
Fragesteller
 18.07.2017, 13:24
@DodgeRT

Ich habe es so vor das die Spalte der usernamen in eine variable gespeichert wird und dann der eigegebene username mit der variable verglichen wird. Das gleiche auch mit dem passwort

0
DodgeRT  18.07.2017, 13:40
@LkLp1082

wozu?

"select xy from user_table where username=$uname and password=$passwd"

-> num_rows > 0 -> erfolgreich

-> num_rows = 0 -> nicht erfolgreich/ kein user

* password sollte natürlich möglichst verschlüsselt sein, daher sollte hier auch eine verschlüsselung angegeben werden da ein direktvergleich nicht möglich is.

0
LkLp1082 
Fragesteller
 18.07.2017, 15:52

Kannst du des ganze in einen Code schreiben? Ich verstehe das nicht so ganz mit den num_rows

0