Я использую IP-адрес пользователя, чтобы найти ближайший аэропорт к местоположению пользователя, используя формулу Haversine, и в конце присваиваю результат моей переменной $ AirportID.
while($row = mysqli_fetch_assoc($result)) {
$AirportID = $row[Airport];
}
У меня есть 5 других запросов php / sql (которые включены в мой index.html), которые требуют эту переменную для запроса базы данных. Существует ли более простой и изящный способ обратиться к этому ближайшему аэропорту ($ AirportID) для всех файлов по сравнению с необходимостью включать / запускать скрипт локатора для каждого отдельного скрипта php?
Спасибо, сообщество Stack Overflow!
Как только вы соберете $AirportID
Вы можете хранить его в $_SESSION
переменная, а затем другие запросы используют это значение.
Используя этот блок кода, он будет поддерживать AirportID
пока у пользователя есть активный сеансовый файл cookie, который обычно удаляется автоматически при закрытии браузера.
<?php
session_start();
if (isset($_SESSION['AirportID'])) $AirportID = $_SESSION['AirportID'];
else {
// Look it up if it doesn't already exist
$result = mysqli_query('<your query> LIMIT 1;');
$row = mysqli_fetch_assoc($result);
$AirportID = $row['Airport'];
$_SESSION['AirportID'] = intval($AirportID);
}
Я изменил код, чтобы отразить, что вы получаете только одну строку. Нет необходимости в while
петля.
Кроме того, никогда не забывайте кавычки вокруг имени поля. Это заставит PHP сначала проверить, есть ли константа с именем Airport
сначала, прежде чем он проверяет имя поля.
Имейте в виду, что если есть форма, которая позволяет им изменять это значение, или если их IP-адрес изменяется, переменная сеанса должна быть unset
:
unset($_SESSION['AirportID']);
Других решений пока нет …