-1

特定の範囲の緯度と経度を持つデータベースからプレーヤーのリストを取得しようとしています。クエリは正常に機能し、結果が得られます。ただし、これらの結果には複数のプレーヤーが含まれる場合があります。以下に示す現在のコードでは、JSON エンコードされたプレーヤーは 1 つだけです。すべてのプレーヤーの 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->fetchAllます。Fetchは「結果セットから次の行をフェッチする」だけですが、fetchAllは「すべての結果セット行を含む配列を返します」。

于 2013-01-04T10:24:05.400 に答える
0

クエリで string を int/double と比較するべきではありません。PDO::PARAM_STR を使用する場合、データを一重引用符で囲みます。ここで PDO::PARAM_INT を使用してみてください。

于 2013-01-04T10:25:08.300 に答える