【问题标题】:How do I return data as a Key & Value pair from MySQL如何从 MySQL 返回数据作为键和值对
【发布时间】:2018-05-30 10:08:02
【问题描述】:

我正在尝试返回一个带有键值对的 JSON 对象,它们都是我的 MySQL 表中的单独列。

所以 MySQL 表看起来(简化 1000%)是这样的:

+-----------------+---------------------+
|      Email      |   ProfilePicture    |
+-----------------+---------------------+
| john@email.com  | https://someurl.com |
| jane@email.com  | https://foobar.com  |
| bobby@email.com | https://random.com  |
+-----------------+---------------------+

我想要一个类似的 JSON 对象

{
"john@email.com":"https://someurl.com",
"jane@email.com":"https://foobar.com",
"bobby@email.com":"https://random.com"
}

我可以通过循环遍历表并将所有内容连接在一起,在 MySQL 中将其构建为字符串,然后在 JS 中解析它。我知道。但它看起来很乱,我知道在 PHP 中必须有一些内置函数。我只是不认识他们。

我所有的其他 PHP/MySQL 配对都在 PHP 中使用 mysqli_fetch_assoc 和 json_encode,因为它们不需要 JSON 键来动态更改值。

最终的 JSON 对象是从 JavaScript 函数返回的,所以我很高兴修复从 JavaScript(或 jQuery)到 PHP,再到 MySQL 过程,然后再返回的链上的任何位置。

【问题讨论】:

    标签: javascript php jquery mysql


    【解决方案1】:

    如果你使用 PDO 连接数据库,你可以使用类似...

    $query = $db->query("SELECT Email, ProfilePicture FROM users");
    $data  = $query->fetchAll(PDO::FETCH_KEY_PAIR);
    $out = json_encode($data);
    

    PDO::FETCH_KEY_PAIR 使用返回的第一列作为键,第二列作为值。

    坚持mysqli

    $result = $db->query("SELECT Email, ProfilePicture FROM users");
    $data = [];
    while ($row = $result->fetch_assoc()) {
        $data[$row['Email']] = $row['ProfilePicture'];
    }
    $out = json_encode($data);
    

    MySQLi 版本 - 略短...

    $result = $db->query("SELECT Email, ProfilePicture FROM users");
    $data = $result->fetch_all(MYSQLI_ASSOC);
    $out = array_column($data, 'ProfilePicture', 'Email');
    $out = json_encode($data);
    

    【讨论】:

    • 猜猜我需要开始使用 PDO... 我将尝试更改此部分并使其正常工作。如果是这样,我会接受这个答案。除非你有这么简单优雅的非 PDO 方式?
    • 我添加了一个 mysqli 替代方案(未测试),它获取每一行并将其添加到数组中。有其他方法可以做到这一点,但无法测试其中任何一种 ATM。
    • 有一颗金星!你是我今天最喜欢的人:)
    • 谢谢, - 很高兴能够提供帮助。
    猜你喜欢
    • 1970-01-01
    • 2018-03-30
    • 2012-07-11
    • 1970-01-01
    • 2021-10-23
    • 1970-01-01
    • 1970-01-01
    • 2020-07-19
    • 2021-05-14
    相关资源
    最近更新 更多