【问题标题】:php json_encode not working properly (add 0 in each row)php json_encode 无法正常工作(每行加 0)
【发布时间】:2015-06-25 11:07:30
【问题描述】:

我有一个只有 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.";
}

有什么帮助吗?

谢谢,

【问题讨论】:

  • 我们无法为您提供我们看不到的代码。但我向你保证json_encode 工作正常(select isn't broken);你需要看看你传递的是什么进入它。

标签: php mysql json


【解决方案1】:

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

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

将您的mysqli_fetch_array 替换为mysqli_fetch_rowmysqli_fetch_assoc

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

echo json_encode($rows);

【讨论】:

    【解决方案2】:

    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

    【讨论】:

      猜你喜欢
      • 2015-11-15
      • 1970-01-01
      • 1970-01-01
      • 2019-01-13
      • 2021-08-16
      • 2012-10-28
      • 2013-10-13
      • 2012-12-06
      • 1970-01-01
      相关资源
      最近更新 更多