从数据库中检索多个记录

时间:2016-01-20 07:25:35

标签: php sql

在我的数据库'坐标'有四列 ID bus_id 纬度 经度 具有特定bus_is的用户在规则的时间间隔内发送其long,lat。我想为每个用户检索最新的值。 这是我的代码:

<?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;    
?>

当我运行此代码时,它并没有给我正确的输出。请告诉我我哪里错了。

3 个答案:

答案 0 :(得分:0)

使用:

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

答案 1 :(得分:0)

你应该在for循环中运行while。试试这段代码:

    <?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;    
?>

答案 2 :(得分:0)

首先更改您的查询并从语句中删除LIMIT:

$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. $arr函数后,您正在回复$result而不是json_encode
  4. 旁注:

    始终在代码中使用错误报告来获取所有错误。