-1

我正在尝试从具有特定纬度和经度范围的数据库中获取玩家列表。查询工作正常并给我结果。然而,这些结果可能包括不止一名玩家。如下所示的当前代码只给了我一个 JSON 编码的玩家。我怎样才能让所有玩家 JSON 编码。

function GetPlayersInRange() 
    {
        try {
            $conn = $this->GetDBConnection();

            $long1 = trim($_REQUEST['long1']);
            $long2 = trim($_REQUEST['long2']);
            $lat1  = trim($_REQUEST['lat1']);
            $lat2  = trim($_REQUEST['lat2']);


            $statement = $conn->prepare('SELECT * FROM players WHERE longitude > :long1 AND longitude < :long2 AND latitude > :lat1 AND latitude < :lat2');
            $statement->bindParam(':long1', $long1, PDO::PARAM_STR);
            $statement->bindParam(':long2', $long2, PDO::PARAM_STR);
            $statement->bindParam(':lat1' , $lat1, PDO::PARAM_STR);
            $statement->bindParam(':lat2' , $lat2, PDO::PARAM_STR);
            $statement->execute();

            if(!($row = $statement->fetch(PDO::FETCH_ASSOC))) 
            {
                return "No Players";
            }

            $conn = null;
        } catch(PDOException $e) {
            throw $e;
        }

        return $row;
    }
4

2 回答 2

2

更改$statement->fetch$statement->fetchAllFetch只会“从结果集中获取下一行”,而fetchAll将“返回包含所有结果集行的数组”。

于 2013-01-04T10:24:05.400 回答
0

您不应该在查询中将字符串与 int/double 进行比较。使用 PDO::PARAM_STR 时,它会将您的数据用单引号括起来。尝试在此处使用 PDO::PARAM_INT。

于 2013-01-04T10:25:08.300 回答