2017-06-26 11 views
0

私は自分のユーザーごとにmeta_keyとmeta_valueというデータベースを持っています。私はlast_loginのように1つの値をエコーし​​たい。これどうやってするの?PDO/PHP:特定のメタキー値をエコーする方法

私は配列やこのようなテーブルを扱うのに慣れていません。

$result[meta_key][last_login]が動作していない;)

ありがとう!

私のデータベーステーブル:

id, user_id, meta_key, meta_value 

いくつかの値:

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 

マイクエリ:

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

私が手アレイ:

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 
) 

答えて

0

シンプルたぶんPDO::FETCH_UNIQUEは正確なあなたが実際に必要なパラメータである

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

しかし、私はまた、後に姓のような他の値を取得できるようにしたいです。したがって、それをクエリに追加することはオプションではありません。 – Oliver

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

しかし、last_loginではなくuser_idをエコーし​​たい場合はどうすればよいですか? – Oliver

0

クエリに追加します。

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

詳細:https://phpdelusions.net/pdo#unique

関連する問題