在我的数据库'坐标'有四列 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;
?>
当我运行此代码时,它并没有给我正确的输出。请告诉我我哪里错了。
答案 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;
<强>的问题:强>
'lat'=>['$latitude'],
中的工作原理。这是什么$latitude
?$arr
函数后,您正在回复$result
而不是json_encode
。旁注:
始终在代码中使用错误报告来获取所有错误。