MySQL подготовил заявления - не все результаты являются обязательными

У меня возникли проблемы с возвратом расстояния в $ из подготовленного заявления. $ Station_id выводится на экран, и все хорошо, но расстояние пусто.

Я также заменил знаки вопроса и выполнил запрос непосредственно в phpmyadmin, и он возвращает столбцы distance и station_id, поэтому сам запрос выглядит нормально.

Испытывая некоторые затруднения, выясняя, почему и задавался вопросом, может ли кто-нибудь пролить свет на то, что идет не так. Пожалуйста, найдите код ниже, и если у вас есть какие-либо вопросы, не стесняйтесь спрашивать. Ох, и для фона формула sql является формула haversine

Любая помощь с благодарностью, еще раз спасибо.

 <?php
   require_once("../includes/station.php");
   require_once("../includes/maps.php");

   global $conn;

   $latitude = 54.335;
   $longitude = -1.45007;
   //$distance = 50;

   $limit_start = 0;
   $limit_end = 5;

   //$query = "SELECT *,(((acos(sin((".$latitude."*pi()/180)) * sin((`Latitude`*pi()/180))+cos((".$latitude."*pi()/180)) * cos((`Latitude`*pi()/180)) * cos(((".$longitude."- `Longitude`)*pi()/180))))*180/pi())*60*1.1515) as distance FROM `postcodelatlng` having distance <= ".$distance;
   //$query .= ' order by distance asc limit 20, 40';

   //works
   //SELECT station_details.station_id, (((acos(sin((54.335*pi()/180)) * sin((`Latitude`*pi()/180))+cos((54.335*pi()/180)) * cos((`Latitude`*pi()/180)) * cos(((-1.45007- `Longitude`)*pi()/180))))*180/pi())*60*1.1515) as distance FROM `postcodelatlng`inner join station_details on station_details.post_code = postcodelatlng.postcode

   // Query uses the haversine formula to calculate distance in miles as the crow flies
   $query = "SELECT station_details.station_id,
          (((acos(sin((?*pi()/180)) * sin((`Latitude`*pi()/180))+cos((?*pi()/180)) * cos((`Latitude`*pi()/180)) * cos(((? - `Longitude`)*pi()/180))))*180/pi())*60*1.1515) AS distance
   FROM `postcodelatlng`
   INNER JOIN station_details ON station_details.post_code = postcodelatlng.postcode
   INNER JOIN core ON station_details.station_id = core.entity_id
   WHERE core.live = 1
   ORDER BY distance ASC";

   $query .= ' limit ?, ?';

   //echo $query;

   if ($stmt = $conn->prepare($query)) {
           $stmt->bind_param('sssii', $lattitude, $lattitude, $longitude, $limit_start, $limit_end);
           $stmt->execute();

           $stmt->bind_result($station_id, $distance);

           while ($stmt->fetch()) {
              echo "id: $station_id dist: $distance";
           }

           $stmt->close();
   }
   $conn->close();
   ?>

0 ответов

Другие вопросы по тегам