【问题标题】:MySQL table to JSON with strange output [duplicate]MySQL表到JSON,输出奇怪[重复]
【发布时间】:2016-08-26 16:02:14
【问题描述】:

我有这个 MySQL 表:

TABLE `table1` (
  `ID` int(11) NOT NULL,
  `First` varchar(30) DEFAULT NULL,
  `Second` varchar(30) DEFAULT NULL,
)

这个用于查询表并将其内容编码为 JSON 对象的 PHP 代码:

<?php
/* Connection stuffs*/

$query = " SELECT * FROM table1;";
$results = mysql_query($query);
$stuff = array();
    while($row = mysql_fetch_array($results))
        array_push($stuff,$row);
$ja = json_encode($stuff);
echo $ja;
?>

现在,代码正在运行,但我得到了一个奇怪的输出(我只发布一行是为了问题的可读性,但其他行是一样的):

{
    "0": "1",
    "ID": "1",
    "1": "ivh",
    "First": "ivh",
    "2": "gyt",
    "Second": "gyt"
}

我的问题是:为什么echo $ja; 不打印这个?

{
        "ID": "1",
        "First": "ivh",
        "Second": "gyt"
    }

"0","1","2" 来自哪里?此外"0" 的内容与ID1-First2-Second 的内容相同。 MySQL 列号和$ja 内容之间存在某种关系。

我也尝试过使用这个查询:

$query = " SELECT ID,First,Second FROM table1;";

但结果是一样的。有人可以帮助我吗?谢谢!

【问题讨论】:

  • 在 $stuff 数组中运行 var_dump,然后再将其转换为 json 并检查发生了什么
  • 也可以用 mysql_fetch_array 代替 mysql_fetch_assoc,这样你也可以保留列名
  • 在我搜索 SO 时,我的问题已被标记为重复,但我没有找到任何关于此问题的信息。 @Phiter Fernandes 感谢您的回复,我已经使用了 mysql_fetch_assoc,现在它可以正常工作了。我无法将您的评论标记为答案,因为我的问题已关闭,对不起。谢谢大佬!
  • 是的,显然有人回答了。
  • 你先回答了,贴出来,我会标记的!谢谢

标签: php json


【解决方案1】:

建议您使用mysql_fetch_assoc()mysql_fetch_array($results, MSSQL_ASSOC)。它只会返回列而不是重复的

$query = " SELECT * FROM table1;";
$results = mysql_query($query);
$stuff = array();
while($row = mysql_fetch_array($results, MSSQL_ASSOC))
{
    array_push($stuff,$row);
}
$ja = json_encode($stuff);
echo $ja;

【讨论】:

    猜你喜欢
    • 2015-12-29
    • 2012-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-07
    • 2021-09-23
    • 2012-10-20
    相关资源
    最近更新 更多