2016-01-24 74 views
0

我有這樣的代碼在PHP中:如何獲取數據的所有行?

if (empty($_GET)) { 
     $response['code'] = 1; 
     $response['status'] = $api_response_code[$response['code']]['HTTP Response']; 
     $sql = "SELECT * FROM table"; 
     $result = $conn->query($sql); 

     if ($result->num_rows > 0) { 
      // output data of each row 
      while ($row = $result->fetch_assoc()) 
        $response['data'] = $row; 
     } else 
      $response['data'] = NULL; 
} 

目前,我只取最後一行在$響應[「數據」。我怎樣才能轉換這個代碼,以獲得所有的$行值?

我試過初始化$response['data'] = array(); 然後做了$this->response['data'] = $row; 但它沒有辦法。 請注意,我是PHP中的一個begginer。

+0

此[SO交](http://stackoverflow.com/questions/7491768/get-rows-from- mysql-table-to-php-arrays)可能會幫助你.. – vmachan

+0

剛剛回答了一個幾乎相同的問題:http://stackoverflow.com/questions/34981215/my-php-scripts-returns-only-one-row-from -my-table/ –

+0

非常感謝你們! – alfakaiwmega

回答

0

您正在用while循環的每次迭代覆蓋您的$response['data'],而不是附加到數組。因此,最後的記錄是唯一保留的記錄。

考慮以下調整,其中$data是它自己的數組,用於保存SQL查詢結果集的行記錄。然後此整個陣列對象可以被附加到初始$response陣列(創建嵌套設置):

$i = 0; 
$data = []; 
if ($result->num_rows > 0) { 
    // output data of each row 
    while ($row = $result->fetch_assoc()) { 
      $data[$i] = $row; 
      ... 

      $i++; 
    } 
} 

$response['data'] = $data;