2013-01-04 2 views
-1

나는 위도와 경도의 특정 범위를 가진 데이터베이스에서 플레이어 목록을 얻으려고합니다. 쿼리가 제대로 작동하고 결과를 알려줍니다. 그러나 이러한 결과에는 둘 이상의 플레이어가 포함될 수 있습니다. 아래에 표시된 코드는 JSON 인코딩 된 플레이어가 하나뿐입니다. 모든 플레이어에게 JSON 인코딩을 부여하려면 어떻게해야합니까?php PDO를 사용하여 데이터베이스의 모든 사용자 목록보기

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

에서 $statement->fetchAll으로 변경하십시오. Fetch은 "결과 집합에서 다음 행 가져 오기"반면 fetchAll은 "결과 집합 행을 모두 포함하는 배열 반환"을 수행합니다.

+0

감사합니다. it.i는 FETCH_ASSOC로 변경해야한다고 생각했습니다. –

0

쿼리에서 문자열을 int/double과 비교하면 안됩니다. PDO :: PARAM_STR을 사용하면 작은 따옴표로 데이터를 래핑합니다. 여기 PDO :: PARAM_INT를 사용해보십시오.

+0

위도/경도는'ints '가 아닙니다. – Prisoner

+2

어쨌든 - ">"로 문자열을 어떻게 비교할 것입니까? – t1gor

+0

당신은 매우 유효한 포인트를 올립니다. – Prisoner

관련 문제