MySQL表到JSON与奇怪的输出


MySQL table to JSON with strange output

我有这个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;";

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

建议使用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;