[英]MySQL query is working with MySQL command line but not MySQLi
我正在使用Google的算法根据我的PHP脚本中的坐标查找附近的位置:
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_query()
mysqli_num_rows()
上调用mysqli_num_rows()
,我将看到10
,但是当我使用此查询时,只会得到一个空数组。
但是,我可以设置$closestUserQuery = "SELECT * FROM Assets"
给我一个包含所有行的数组,这显然效率很低并且肯定不适合此特定应用程序。 我还可以在MySQL的命令行界面中调用Google提供的查询,并且确切地得到了我要查找的内容-来自附近数据库的结果。
这些是“ Assets
表的列:
显然0.0568182
英里太少或什么。 如果我将其设置为更高,则查询将运行,但不会累加,因为它在0.0568182
英里处的MySQL命令行中返回了结果。 感谢您的阅读和帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.