MySQL表到JSON有奇怪的输出

时间:2016-08-26 16:02:14

标签: php json

我有这个MySQL表:

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

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

<?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"的内容与ID以及1-First2-Second相同。 MySQL列号和$ja内容之间存在某种关系。

我也试过使用这个查询:

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

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

1 个答案:

答案 0 :(得分: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;