2016-11-09 118 views
0

我有點新來SQL,我有問題。我正在按照Here的教程嘗試從我的數據庫中獲取數據到我的android應用程序中。從php數據庫中獲取一組JSON數據

我有它的工作,但它只得到一條線。我知道應該可以迭代數據庫並將每個匹配ID的行回送給JSON,但我不知道如何。我將如何做到這一點?

我當前的代碼:

<?php 

if($_SERVER['REQUEST_METHOD']=='GET'){ 

$id = $_GET['id']; 

require_once('dbConnect.php'); 

$sql = "SELECT * FROM LATLON WHERE DeviceID='".$id."'"; 

$r = mysqli_query($con,$sql); 

$res = mysqli_fetch_array($r); 

$result = array(); 

array_push($result,array(
"INDEX"=>$res['INDEX'], 
"DeviceID"=>$res['DeviceID'], 
"LAT"=>$res['LAT'], 
"LON"=>$res['LON'] 
) 
); 

echo json_encode(array("result"=>$result)); 

mysqli_close($con); 

} 
?> 

編輯 我編輯我的代碼這一點,但我卻一無所獲。仍然不完全理解正在發生的事情。感謝所有的幫助!

<?php 

if($_SERVER['REQUEST_METHOD']=='GET'){ 

$id = $_GET['id']; 

require_once('dbConnect.php'); 

$sql = "SELECT * FROM LATLON WHERE DeviceID='".$id."'"; 

$r = mysqli_query($con,$sql); 

while($row = $result->mysqli_fetch_array($r, MYSQLI_ASSOC)){ 
    $array[] = $row; 
} 

echo json_encode($array); 

mysqli_close($con); 

} 
?> 
+1

你的代碼是敞開的,以[SQL注入](https://en.wikipedia.org/wiki/SQL_injection)攻擊。永遠不要相信用戶輸入,包括你的例子中的'$ id'。不要通過將字符串粘在一起來構建SQL查詢,請閱讀[預處理語句](https://secure.php.net/manual/en/mysqli.prepare.php)。或者,[與PDO](https://secure.php.net/manual/en/pdo.prepared-statements.php)。 – Chris

+0

哦!謝謝(你的)信息。這只是一個示例,但我肯定需要清理輸入! – Reid

+0

你沒有收到錯誤信息嗎?它應該是'$ result-> fetch_array',而不是'$ result-> mysqli_fetch_array'。 – Barmar

回答

4

您可以通過mysqli_fetch_array();

while($row = mysqli_fetch_array($r, MYSQLI_ASSOC)) { 
     $array[] = $row; 
} 
echo json_encode($array); 
+0

仍然不太確定我做錯了什麼。我是否正確地執行你的代碼? – Reid

+1

對不起,請檢查更新的代碼。我使用面向對象(OO)風格,並且使用過程式。 – Daniel

+1

OH HEY!有用!謝謝!!! – Reid

2

迭代當您使用OO接口,方法名不mysqli_開始,它只是用來進行過程調用。您也沒有名爲$result的變量,結果在$r

所以它應該是:

while ($row = $r->fetch_array(MYSQLI_ASSOC)) { 

或:

while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC)) {