Einzelner Wert aus Datenbank auslesen mit PHP?
Hallo,
wie kann ich einen einzelnen Wert aus einer Datenbank mit PHP auslesen?
Meine Datenbank sieht so aus:
Ich möchte jetzt den 'value' (1628850079) mir ausgeben lassen und in einer Variablen speichern. Dazu verwende ich folgenden Code:
$login_time_query = "SELECT 'value' FROM 'settings' WHERE 'key' = 'login_time'; "
$login_time_result = mysqli_query($connect, $login_time_query );
echo $login_time_result;
Leider wird mir der 'value' (1628850079) jedoch nicht angezeigt. Kann mir jemand helfen?
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.
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.
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.
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'];
}
?>
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.
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.
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'];
}
?>
Auch mit mysqli lässt sich problemlos objektorientiert arbeiten. Einen Grund, alles auf PDO umzuschreiben, sehe ich daher nicht.
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.