【问题标题】:Show two MySQL column as key and value in JSON format以 JSON 格式显示两个 MySQL 列作为键和值
【发布时间】:2020-08-18 20:32:36
【问题描述】:

我想以 JSON 对象格式显示这个 MySQL 表数据,_key 列作为 key_value 列作为 value。

如何在 PHP 中使用 PDO 做到这一点?

我试过这样:

$info_arr = array();

while ($row = $result->fetch(PDO::FETCH_ASSOC))
    $info_arr[] = $row;
echo json_encode($info_arr);

但这给了我这样的结果:

[
{
    "_key": "app_name",
    "_value": "Mathology"
},
{
    "_key": "app_package",
    "_value": "com.shovon.mathology"
},
{
    "_key": "app_version",
    "_value": "1.0"
},
{
    "_key": "app_icon",
    "_value": "com.shovon.mathology"
}
]

但我想得到这样的结果:

[
 {
     "app_name": "Mathology",
     "app_package": "com.shovon.mathology",
     "app_version": "1.0",
     "app_icon": "com.shovon.mathology"
 }
]

【问题讨论】:

  • $info_arr[$row['_key']] = $row['_value'];

标签: php mysql json pdo


【解决方案1】:
echo json_encode($result->fetchAll(\PDO::FETCH_KEY_PAIR));

输出:

{
    "app_name": "Mathology",
    "app_package": "com.shovon.mathology",
    "app_version": "1.0",
    "app_icon": "com.shovon.mathology"
}

我不知道您为什么要将单个对象放入 JSON 数组中。我的解决方案只输出对象。如果你想将它包装在一个数组中,那么只需将它放在[] 中,然后再发送到json_encode()

echo json_encode([$result->fetchAll(\PDO::FETCH_KEY_PAIR)]);

【讨论】:

  • 非常感谢。实际上我会使用多个对象,这就是我使用数组的原因。 @dharman
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-11
  • 1970-01-01
  • 1970-01-01
  • 2021-07-21
  • 2014-08-15
  • 1970-01-01
相关资源
最近更新 更多