【发布时间】:2017-09-09 10:55:55
【问题描述】:
我的代码有一个小问题。我想要做的是将选择的结果显示为 json。我就是这样做的:
foreach ($query as $row) {
$test = json_encode($row);
}
但它返回:
{0: "34.8", 1: "1441098255", 2: "1", col1: "34.8", col2: "1441098255", col3: "1"}
我想要这样:
{0: "34.8", 1: "1441098255", 2: "1"}
或者这个:
{col1: "34.8", col2: "1441098255", col3: "1"}
我尝试过what they say here,但无济于事。
编辑:这些回复很有帮助,他们做我想做的事。现在的问题是我有一些鬼鬼祟祟的部分,由于某种原因似乎无法摆脱。这是生成的 json 字符串:
{"col1":"34.8","0":"34.8","col2":"1441098255","col3":"1"}
那个 "0":"34.8" 似乎不想离开,我完全不知道它是从哪里来的,如果我改变列顺序,它总是会复制先出现的列。如果我将“col3”作为第一个,它会显示:
{"col3":"1","0":"1","col2":"1441098255","col1":"34.8"}
Edit2: 结果发现解决方案比我尝试的要简单得多。以下是如何正确显示它:
while ($arr = $query->fetch(PDO::FETCH_ASSOC)) {
echo json_encode($arr);
}
【问题讨论】:
-
您可以轻松地在循环中为所需的输出构建正确的格式,然后在循环输出 json 中的数组
-
@Gert 你介意解释一下怎么做吗?
-
看起来您的数据库结果由数字 ID 和列名索引 - 您应该能够在获取结果时指定您想要的结果(在对
PDOStatement::fetch或类似的调用中)。不过,您还没有包含数据库代码,因此无法准确说出您需要更改的内容。 -
@iainn 你的意思是选择?我使用
$query = $this->dbh->prepare(select stuff...),后跟$query->execute(); -
什么是用于例如移动应用程序连接到数据库的 json 数据? @Newwt