【问题标题】:MySQL -> PHP Array -> Json need output in array plus object formatMySQL -> PHP Array -> Json 需要以数组加对象格式输出
【发布时间】:2015-03-05 07:19:16
【问题描述】:

我正在尝试从 MySQL 获取数据并以 JSON 格式显示 这是部分 PHP 代码

$sql = "SELECT item, cost, veg, spicy_level FROM food1";
$result = $conn->query($sql);

    while($row = $result->fetch_assoc()) {

    echo  json_encode($row),"<br/>";}

?> 我得到的输出为

{"item":"dosa","cost":"20","veg":"0","spicy_level":"1"}
{"item":"idli","cost":"20","veg":"0","spicy_level":"2"}

但我需要它

food1:[
{"item":"dosa","cost":"20","veg":"0","spicy_level":"1"},
{"item":"idli","cost":"20","veg":"0","spicy_level":"2"}
]

谁能指导我? 我认为我得到的是对象格式,我需要以数组格式输出,即使用 [&]。 对这个 json 和 php 非常陌生。

【问题讨论】:

    标签: php mysql arrays json


    【解决方案1】:

    您可以将查询结果封装在数组中并打印出来;

    $sql = "SELECT item, cost, veg,     spicy_level FROM food1";
    $result = $conn->query($sql);
    $a = array();
    while($row = $result->fetch_assoc()) {
      if($a['food1'] ==null)
         $a['food1'] = array():
      array_push($a['food1'],$row);}
    
    
      echo json_encode($a);
    ?></i>
    

    【讨论】:

      【解决方案2】:

      不要在每次循环中都调用json_encode。将所有行放入一个数组中,然后对其进行编码。

      $food = array();
      while ($row = $result->fetch_assoc()) {
          $food[] = $row;
      }
      echo json_encode(array('food1' => $food));
      

      【讨论】:

        【解决方案3】:

        你的代码应该是:

        $sql = "SELECT item, cost, veg, spicy_level FROM food1";
        $result = $conn->query($sql);
        
        $food['food1'] = array();
        
        while($row = $result->fetch_assoc()) {
            $food['food1'][] = $row;    
        }
        
        echo  json_encode($food);
        

        【讨论】:

        • 抱歉……打错字了……更新了代码……更改了最后一行
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多