#php #mysql
#php #mysql
Вопрос:
У меня есть база данных с journeys, я пытаюсь найти все результаты в таблице, которые передают оба запроса (например, INTERSECT), но я могу получить только два набора результатов. Запросы выполняют поиск по всем записям в радиусе с обоих концов sql — это начало пути, а sql2 — конец пути
<?php
include_once 'dbconnect.php';
// Get lat and long by address
$dlocation = 'SW1A 0AA';
$address = $dlocation; // Google HQ
$prepAddr = str_replace(' ',' ',$address);
$geocode=file_get_contents('https://maps.google.com/maps/api/geocode/json?address='.$prepAddr.'amp;sensor=false');
$output= json_decode($geocode);
$lat = $output->results[0]->geometry->location->lat;
$lng = $output->results[0]->geometry->location->lng;
// Get lat and long by address
$dlocation = 'bb97bp';
$address = $dlocation; // Google HQ
$prepAddr = str_replace(' ',' ',$address);
$geocode=file_get_contents('https://maps.google.com/maps/api/geocode/json?address='.$prepAddr.'amp;sensor=false');
$output= json_decode($geocode);
$lat2 = $output->results[0]->geometry->location->lat;
$lng2 = $output->results[0]->geometry->location->lng;
$sql = "SELECT adpastrip_id, ( 3959 * acos( cos( radians($lat) ) * cos( radians( lat1 ) ) * cos( radians( long1 ) - radians($lng) ) sin( radians($lat) ) * sin( radians( lat1 ) ) ) ) AS distance FROM addgoodstrip HAVING distance < 10 ORDER BY distance LIMIT 0 , 20";
$result = $con->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
$id = $row['adpastrip_id'];
}
}
$sql2 = "SELECT adpastrip_id, ( 3959 * acos( cos( radians($lat2) ) * cos( radians( lat2 ) ) * cos( radians( long2 ) - radians($lng2) ) sin( radians($lat2) ) * sin( radians( lat2 ) ) ) ) AS distance FROM addgoodstrip HAVING distance < 10 ORDER BY distance LIMIT 0 , 20 ";
$result2 = $con->query($sql2);
if ($result2->num_rows > 0) {
// output data of each row
while($row2 = $result2->fetch_assoc()) {
$id2 = $row2['adpastrip_id'];
}
}
?>
Комментарии:
1. Является ли построение результатов, пока циклы являются фактическим кодом? Я знаю, что это напрямую не связано с вопросом, но это сбивает с толку, потому что с этими циклами ответ не был бы полезен. Если вы знаете, что вы там делаете, то лучше написать какой-нибудь общий комментарий, чем ошибочный фиктивный код (вы не создаете там результирующий набор — просто сохраняете последнее итерированное значение, и вы не используете значения расстояния, поступающие из запроса). Кроме того, почему бы вам просто не использовать один запрос? Это простая логика.