MySQL查询正在使用MySQL命令行但不是MySQLi

时间:2015-01-31 04:12:13

标签: 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 = $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"给定一个包含所有行的数组,这显然效率很低,当然不适合这个特定的应用程序。我还可以在MySQL的命令行界面中调用Google提供的查询,并且我正确地给出了我正在寻找的内容 - 来自附近数据库的结果。

这些是我Assets表的列: enter image description here

1 个答案:

答案 0 :(得分:0)

显然0.0568182英里太少或什么的。如果我设置得更高一点,则查询运行但不会加起来,因为它在0.0568182英里的MySQL命令行返回结果。感谢阅读并试图提供帮助!