2017-06-26 5 views
0

Ich habe eine Datenbank mit Meta-Schlüssel und Meta-Wert für jeden meiner Benutzer. Ich möchte nur einen Wert wie last_login ausgeben. Wie kann ich das machen?PDO/PHP: Wie man einen bestimmten Metakey-Wert ausgibt

Ich bin nicht gewohnt, mit Arrays und mit einer Tabelle wie dieser zu arbeiten.

$result[meta_key][last_login] nicht funktioniert;)

Dank!

Meine Datenbanktabelle:

id, user_id, meta_key, meta_value 

Einige Werte:

3, 2, last_login, 2017-06-25 15:29:52 
4, 2, name, Michael 
5, 2, lastname, Leahcim 
6, 3, last_login, 2017-06-04 07:29:52 
7, 3, name, Peter 
8, 3, lastname, Retep 

Meine Frage:

$sth = $db->prepare("SELECT * FROM `usermeta` WHERE `user_id` =2"); 
    $sth->execute(); 
    $result = $sth->fetchAll(); 
    print_r($result); 

Das Array erhalte ich:

Array (
[0] => Array 
(
[id] => 3 
[0] => 3 
[user_id] => 2 
[1] => 2 
[meta_key] => last_login 
[2] => last_login 
[meta_value] => 2017-06-25 15:29:52 
) 

Antwort

0

Einfach Sie tatsächlich benötigen PDO::FETCH_UNIQUE genau der Parameter ist es zu Ihrer Anfrage

$sth = $db->prepare("SELECT * FROM `usermeta` 
      WHERE `user_id` =2 and meta_key='last_logon'"; 
    $sth->execute(); 
    $result = $sth->fetchAll(); 
    print_r($result); 
+0

Aber ich möchte auch in der Lage sein, andere Werte später wie der Nachname zu bekommen. Daher ist das Hinzufügen zur Abfrage keine Option. – Oliver

0
<?php 
$sth = $db->query("SELECT * FROM `usermeta` WHERE `user_id` =2 AND meta_key='last_logon'")->fetchall(); 
print_r($sth); 
?> 
+0

Aber was, wenn ich user_id statt last_login wiederholen möchte? – Oliver

0

Vielleicht hinzufügen.

$sql = 'SELECT * FROM `usermeta` WHERE `user_id` = 2'; 
$stmt = $pdo->prepare($sql); 
$stmt->execute(); 
$rows = $stmt->fetchAll(PDO::FETCH_UNIQUE); 
var_dump($rows); 

Weitere Details: https://phpdelusions.net/pdo#unique

Verwandte Themen