2016-01-20 179 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

对不起,我不明白你最后的评论 –