2016-07-02 175 views
0

我在db中有多行,如'id','name','bill',並將它們作爲json的RESTful服務。但是,我沒有獲取json中的所有行數據,只獲取最後一行。有人能幫我嗎?從db中獲取數據只獲取最後一行爲json

代碼段:

//Putting query in connection 
$result = $conn->query($sql); 

if ($result->num_rows > 0) { 
    // output data of each row 
    while($row = $result->fetch_assoc()) { 
     $array = array('DATA'=> 
      array(
       array('id'=>$row["id"], 'name'=> $row["name"], 'bill'=> $row["bill"]), 
      ) 
     ); 
    } 
    echo json_encode($array); 
} 

結果:

enter image description here

+0

你可以在下面回答這個問題...不在評論中。 :) – Deadpool

回答

5

說明:在每個while循環,要更換的$array內容。這樣,當循環結束時,最終只有最後一行。

所以,請嘗試使用:

// while 
$array[] = array('DATA'=> ... 
// rest of code 


如果你想在最頂層是DATA,它可以被使用在mysqli_result::fetch_all更簡單的方式實現。請看:

// run query 
$arr = $result->fetch_all(MYSQLI_ASSOC); // (gotta fetch 'em all) 
$arr = array('DATA' => $arr); // set the top-level part 
echo json_encode($arr); // display json 

這將輸出類似:

{ 
    "DATA":[ 
     { 
     "id":5, 
     "name":"Pizza", 
     "bill":"$50" 
     }, 
     { 
     "id":"ANOTHER_ID", 
     "name":"ANOTHER_FOOD", 
     "bill":"ANOTHER_BILL" 
     } 
    ] 
} 

至於第二個方法旁註:

  • 將返回所有列從SELECT ,所以你可能想要指定你需要的列(SELECT id, name, bill FROM table_name而不是SELECT * FROM table_name);
  • 您可以使用alias更改結果中返回的列名稱。這樣,返回的鑰匙就變成了你想要的鑰匙。
+0

我想回答這個問題,但1投票了 –

+0

如果有人知道更好的'別名'資源... – FirstOne