php json_encode无法正常工作(每行加0)

时间:2015-06-25 11:07:31

标签: php mysql json

我有一个只有1列“c_name”的mysql表。 当我回显这个表的行(json_encoded)时,它给了我这个 -
[{"0":"Apparel, Textiles & Accessories","c_name":"Apparel, Textiles & Accessories"},{"0":"Auto & Transportation","c_name":"Auto & Transportation"},{"0":"Electronics","c_name":"Electronics"},{"0":"Machinery, Industrial Parts & Tools","c_name":"Machinery, Industrial Parts & Tools"},{"0":"Gifts, Sports & Toys","c_name":"Gifts, Sports & Toys"}]

为什么每一行都会出现0? 我不想要它。

这是我的代码 -

$sql="SELECT * FROM categories";
$r=mysqli_query($con,$sql);

$rows = array();
if ($result=mysqli_query($con,$sql))
{
    // Fetch one and one row
    while($row = mysqli_fetch_array($r))
    {
        $rows[] = $row;
    }

    echo json_encode($rows);

    //Free result set
    mysqli_free_result($result);
}
else
{
    echo "Umm... Some internal error.";
}

任何帮助?

谢谢,

2 个答案:

答案 0 :(得分:1)

由于您使用SQL对象的->fetch()方法。此方法返回两个值(FETCH_ROW和FETCH_ASSOC)。尝试在json_encode之前print_r()你的变量,你会看到这个。

或者将您的代码从SQL查询提供给json_encode。

使用mysqli_fetch_arraymysqli_fetch_row重新填充mysqli_fetch_assoc

while($row = mysqli_fetch_row($r))
{
    $rows[] = $row;
}

echo json_encode($rows);

答案 1 :(得分:0)

mysqli_fetch_array()的第二个参数设置为 MYSQLI_ASSOC

// Fetch one and one row
while($row = mysqli_fetch_array($r, MYSQLI_ASSOC))
{
    $rows[] = $row;
}

默认为 MYSQLI_BOTH ,它返回数字索引和命名索引。

来源:http://php.net/manual/en/mysqli-result.fetch-array.php