Einzelner Wert aus Datenbank auslesen mit PHP?

3 Antworten

Also so richtig ist mir das Problem nicht klar. Wenn dein Screenshot eine MySQL-Tabelle mit Namen settings darstellen soll, dann fragst du die Spalte einfach so ab:

SELECT `login_time` FROM `settings` WHERE `id` = 42

Den WHERE-Teil musst du natürlich nach deinen Anforderungen anpassen.

Woher ich das weiß:Berufserfahrung – Entwickle seit > 20 Jahren Anwendungen mit PHP.

Klose901 
Fragesteller
 13.08.2021, 17:59

Genau es handelt es sich um eine MySQL-Tabelle, in der ich sämtliche Werte für meine Einstellungen abspeichern will. Und jetzt möchte ich, dass mir einfach immer die zehnstellige Zahl (timestamp) rechts von der "login_time" aus der Datenbank ausgespuckt wird. Wenn sich die Tabelle "settings" aber in Zukunft noch weiter füllt kann es sein, dass z.B. die Zeile "login_time" nicht mehr an der gleichen Stelle ist. Daher kann ich schlecht mit einer festen id-Zuweisung/Zeilenzuweisung arbeiten. Daher ist gerade der WHERE-Teil mein Problem.

0
Babelfish  13.08.2021, 18:37
@Klose901

Sehe ich das richtig, dass deine Tabelle settings nur zwei Spalten mit Namen key und value hat? Wenn ja, dann fragst du es einfach so ab:

SELECT `value` FROM `settings` WHERE `key` = 'login_time'

Beachte, dass value und key Schlüsselwörter in MySQL sind und deshalb in Backticks ` gesetzt werden müssen. Nur 'login_time' ist ein String und wird in einfache Anführungszeichen gesetzt.

1

Dein query ist falsch der komplette

Auch das Where lautet so: 'login_time' = 1234

Allerdng ist nicht ganz klar, du kennst die Login time wahrscheinlich nicht.

Wo nach möchtest du denn hin selektieren?

Das wird ja nicht die einzige Zeile in der Tabelle sein.


Klose901 
Fragesteller
 13.08.2021, 16:52

Also ich schreibe den timestamp wann sich ein User eingeloggt hat in meine Datenbank. Der steht dann in der zweiten Spalte der Zeile "login_time". Diesen timestamp möchte ich dann im weiteren Verlauf meines Codes irgendwann abgreifen und mir ausgeben lassen.

0
Kiboman  13.08.2021, 16:55
@Klose901

Ja aber es sind ja ggf 100erte Zeilen drinn

Was du willst ist ein

SELECT login_time From settings

Damit rufst du alle login_time an

Jetzt musst du aber eine dir bekannte Spalte wählen.

Where login_time = 1628850079 macht ja wenig Sinn. Sonst müsstest du ihn ja nicht aus der DB abrufen

Also musst du ein dir bekanntes WHERE aussuchen z.b. userid wenn du sie hast.

0
Klose901 
Fragesteller
 13.08.2021, 17:08
@Kiboman

"Jetzt musst du aber eine dir bekannte Spalte wählen."
Ich steh irgendwie auf dem Schlauch. Die Spalte ist mir doch bekannt. Die heißt doch "value" oder nicht?

0
Klose901 
Fragesteller
 13.08.2021, 17:17
@Klose901

Also da es sich auch um ein eigenes Hobby_projekt handelt habe ich auch immer nur einen einzigen Wert für "login_time" da ich nur einen User habe.

0
geri3d  13.08.2021, 16:56

Steig um auf PDO und erspar dir viel Denkarbeit. Objektorientierter Datenbankzugriff ist viel effizienter und sicherer.

Ein Grundgerüst:

<?php
// $view from page
$pdo = new PDO('mysql:host=localhost;dbname=db_name', 'db_user', 'db_pw');
$statement = $pdo->prepare("SELECT * FROM `homepage` WHERE seite = ?");
$statement->execute(array($view));   

while($row = $statement->fetch()) {
    echo "<title>" . $row['titel'] . "</title>";
    $homepage=$row['text_de'];
}
?>
0
Kiboman  13.08.2021, 16:57
@geri3d

Lass ihn das doch später machen, wenn der Rest dann funktioniert.

1

Steig um auf PDO und erspar dir viel Denkarbeit. Objektorientierter Datenbankzugriff ist viel effizienter und sicherer.

Ein Grundgerüst:

<?php
// $view from page
$pdo = new PDO('mysql:host=localhost;dbname=db_name', 'db_user', 'db_pw');
$statement = $pdo->prepare("SELECT * FROM `homepage` WHERE seite = ?");
$statement->execute(array($view));   

while($row = $statement->fetch()) {
    echo "<title>" . $row['titel'] . "</title>";
    $homepage=$row['text_de'];
}
?>
Woher ich das weiß:eigene Erfahrung

regex9  13.08.2021, 17:39

Auch mit mysqli lässt sich problemlos objektorientiert arbeiten. Einen Grund, alles auf PDO umzuschreiben, sehe ich daher nicht.

2