检索从数据库中
问题描述:
在我的数据库中的多个记录的“坐标”有四列 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;
?>
当我运行这段代码它不给我正确的输出。请告诉我我在哪里错了。
答
您应该运行而进入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;
?>
答
使用:
$query = "SELECT id, longitude, latitude FROM data WHERE bus_id= ".$x." ORDER BY id DESC" ;
答
首先改变你的查询,并从语句中删除极限:
$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;
问题:
- 您期待多个数据,但使用LIMIT 1
- 我不知道如何在array_push
'lat'=>['$latitude'],
工作。这里是什么$latitude
? - 您在
json_encode
函数后呼应$arr
而不是$result
。
侧面说明:
始终使用错误报告在你的代码让所有的错误。
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
你期望什么,在查询中使用LIMIT 1 .. – devpro
我想要选择long,lat的最新值的特定用户 –