【问题标题】:PDO / PHP: How to echo a specific metakey valuePDO / PHP:如何回显特定的元键值
【发布时间】:2017-06-26 15:31:59
【问题描述】:

我的每个用户都有包含 meta_key 和 meta_value 的数据库。我只想回显一个像 last_login 这样的值。我怎样才能做到这一点?

我不习惯使用数组和这样的表格。

$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
)

【问题讨论】:

    标签: php mysql pdo


    【解决方案1】:

    简单地将其添加到您的查询中

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

    【讨论】:

    • 但我也希望以后能够获取其他值,例如姓氏。所以将其添加到查询中不是一个选项。
    【解决方案2】:
    <?php
    $sth = $db->query("SELECT * FROM  `usermeta`  WHERE  `user_id` =2 AND meta_key='last_logon'")->fetchall();
    print_r($sth);
    ?>
    

    【讨论】:

    • 但是如果我想回显 user_id 而不是 last_login 怎么办?
    【解决方案3】:

    也许PDO::FETCH_UNIQUE 正是您实际需要的参数。

    $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

    【讨论】:

      猜你喜欢
      • 2015-07-15
      • 2014-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-14
      • 2016-08-26
      • 2020-02-10
      • 2019-08-05
      相关资源
      最近更新 更多