Php MySQL查询使用的是MySQL命令行,但不是MySQLi

Php MySQL查询使用的是MySQL命令行,但不是MySQLi,php,mysql,mysqli,Php,Mysql,Mysqli,我正在使用Google的算法根据PHP脚本中的坐标查找附近的位置: if ($requestType == "closestPeers") { $clientsCoordinates = mysqli_fetch_row(mysqli_query($connection,"SELECT latest_latitude,latest_longitude FROM Assets WHERE username='{$username}'")); $longitude = $client

我正在使用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_查询上调用mysqli_num_行,我将看到10行,但是当我使用这个查询时,我只得到一个空数组

但是,我可以从资产中设置$closestUserQuery=SELECT*,因为我得到了一个包含所有行的数组,这显然是非常低效的,当然不适合这个特定的应用程序。我也可以在MySQL的命令行界面中调用Google提供的查询,我得到的正是我想要的——来自附近数据库的结果

以下是“我的资产”表的列:
显然,0.0568182英里太少了。如果我将该值设置得稍高一点,查询就会运行,但这并不正确,因为它在0.0568182英里处的MySQL命令行中返回结果。谢谢你的阅读和帮助

查询中的第一个$lat实际上应该是$latitude吗?应该考虑在所有数据库访问代码周围放置错误处理。将尽可能多的命令塞进一行代码中不会得到额外的分数。是的,应该这样!我现在就编辑它。我从来没有听说过如果没有“分组依据”,你可以做“拥有”-你有没有试着把整个事情放在眼里,并对它进行查询?