Я использую алгоритм Google для нахождения места рядом на основе координат в моем PHP скрипт:MySQL запросов работает с командной строки MySQL, но не MySQLi
if ($requestType == "closestPeers") {
$clientsCoordinates = mysqli_fetch_row(mysqli_query($connection,"SELECT latest_latitude,latest_longitude FROM Assets WHERE username='{$username}'"));
$longitude = $clientsCoordinates[0];
$latitude = $clientsCoordinates[1];
$miles = 0.0568182; /* 300 Feet, a bit larger than average Midtown Manhattan blocks */
$closestUsersQuery = "SELECT *,
(3959 * acos(cos(radians('$latitude')) *
cos(radians(latest_latitude)) *
cos(radians(latest_longitude) -
radians('$longitude')) +
sin(radians('$latitude')) *
sin(radians(latest_latitude))))
AS distance FROM Assets HAVING distance < '$miles' ORDER BY distance ASC LIMIT 0, 5";
$closestUsers = mysqli_fetch_all(mysqli_query($connection,$closestUsersQuery));
foreach ($closestUsers as $nearbyUser) {
$responseArray[$nearbyUser[1]] = $nearbyUser[4];
}
} else if ($requestType == "cellImage") {
Но дело в том, что этот запрос не будет работать для любой причины. Я могу позвонить mysqli_num_rows()
по этому адресу mysqli_query()
, и я увижу 10
, но когда я использую этот запрос, мне присваивается пустой массив.
Однако, я мог бы установить $closestUserQuery = "SELECT * FROM Assets"
Мне задан массив со всеми строками, который, очевидно, очень неэффективен и, безусловно, непригоден для этого конкретного приложения. Я мог бы также вызвать запрос, предоставленный Google в интерфейсе командной строки MySQL, и мне дали именно то, что я ищу - результаты из базы данных поблизости.
Эти столбцы для моей Assets
таблице:
Должен ли сначала $ lat в запросе быть $ широта? Вы должны рассмотреть вопрос об обработке ошибок по всему коду доступа к базе данных. Вы не получаете бонусных очков за то, что вы набрали столько команд в одну строку кода, насколько это возможно. –
Да, это должно! Сейчас я отредактирую это. – IIllIIll
Я никогда не был новым, вы могли бы сделать «HAVING» без «GROUP BY». Вы пытались вставить все это в VIEW и запросить его? – terary