2016-01-20 247 views
0

在我的數據庫中的多個記錄的「座標」有四列 ID bus_id 緯度經度 其中 具有特定bus_is用戶發送它的長,緯度上的規則時間間隔。我想爲每個用戶檢索最新的值。 這裏是我的代碼:檢索從數據庫中

<?php 
     define('HOST','localhost'); 
     define('USER','root'); 
     define('PASS','1234'); 
     define('DB','coordinates'); 
     $con = mysqli_connect(HOST,USER,PASS,DB); 


    $arr=[]; 
     for($x=1; $x=3; $x++){ 
     $query = "SELECT id, longitude, latitude FROM data WHERE bus_id= ".$x." ORDER BY id DESC limit 1 offset 1 " ; 
     $qry_result = mysqli_query($con,$query);// or die(mysqli_error()); 
     } 
     // Insert a new row in the table for each person returned 
     while($row = mysqli_fetch_array($qry_result)) { 

     array_push($arr, [ 
      'lat'=>['$latitude'], 
      'lng'=>['$longitude'], 
      //'recs'=>$recs 
     ]); 
     } 

$record= json_encode($arr); 
echo $arr;  
?> 

當我運行這段代碼它不給我正確的輸出。請告訴我我在哪裏錯了。

+0

SELECT id,longitude,latitude FROM data WHERE bus_id =「。$ x」。 ORDER BY id DESC limit 1 offset 1 ---- limit 1只選擇第一條記錄,刪除它,然後再試一次 – 2016-01-20 07:28:04

+0

你期望什麼,在查詢中使用LIMIT 1 .. – devpro

+0

我想要選擇long,lat的最新值的特定用戶 –

回答

0

您應該運行而進入for循環。試試這個代碼:

<?php 
     define('HOST','localhost'); 
     define('USER','root'); 
     define('PASS','123456'); 
     define('DB','test'); 
     $con = mysqli_connect(HOST,USER,PASS,DB); 

    $arr=[]; 
     for($x=1; $x<=3; $x++){ 
     $query = "SELECT id, longitude, latitude FROM data WHERE bus_id= ".$x." ORDER BY id DESC limit 1" ; 

     $qry_result = mysqli_query($con,$query);// or die(mysqli_error()); 
    // Insert a new row in the table for each person returned 
     while($row = mysqli_fetch_array($qry_result)) { 

     array_push($arr, [ 
      'lat'=>[$row['latitude']], 
      'lng'=>[$row['longitude']], 
      //'recs'=>$recs 
     ]); 
     } 
     } 


$record= json_encode($arr); 
echo $record;  
?> 
+1

在你的代碼中,你正在嘗試echo'array' – Saty

+1

echo $ record ... – devpro

+0

謝謝我錯過了.. :) –

0

使用:

$query = "SELECT id, longitude, latitude FROM data WHERE bus_id= ".$x." ORDER BY id DESC" ; 
0

首先改變你的查詢,並從語句中刪除極限:

$query = " 
SELECT id, longitude, latitude 
FROM DATA 
WHERE bus_id= ".$x." 
ORDER BY id DESC"; 

其次,你需要獲得最新的價值爲每個用戶爲:

$arr = array(); 
while($row = mysqli_fetch_array($qry_result)) { 
    $arr[$row['id']]['lat'] = $row['latitude']; 
    $arr[$row['id']]['lng'] = $row['longitude']; 
} 
$record= json_encode($arr); 
echo $record; 

問題:

  1. 您期待多個數據,但使用LIMIT 1
  2. 我不知道如何在array_push 'lat'=>['$latitude'],工作。這裏是什麼$latitude
  3. 您在json_encode函數後呼應$arr而不是$result

側面說明:

始終使用錯誤報告在你的代碼讓所有的錯誤。

+0

緯度是在我的數據庫表中的列 –

+0

@hibaali:是的,但我希望它給出了U $緯度,而不是實際值... – devpro

+0

對不起,我不明白你最後的評論 –