使用php PDO从数据库获取所有用户的列表

时间:2013-01-04 10:19:56

标签: php json pdo

我正在尝试从具有特定纬度和经度范围的数据库中获取玩家列表。查询工作正常,并给我结果。然而,这些结果可能包括不止一个玩家。如下所示的当前代码为我提供了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;
    }

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

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