2016-10-21 1 views
0

내 사용자가 내 응용 프로그램에 로그인하여 그들이 속한 '커뮤니티'목록을 검색 할 때 SQL 쿼리를 실행하고 있습니다.이 함수는 5의 배열이어야하는 것 중에서 첫 번째 값만 반환하는 이유는 무엇입니까?

내 주소 표시 줄에 직접 로그인 링크를 붙여 넣어 어떤 값이 반환되는지 테스트하려고합니다.

그것은 5 개 항목의 배열을 반환해야하지만, 단지 내가 phpMyAdmin을에서 SQL 쿼리를 테스트 한 올바른 결과를 반환 1.

반환합니다.

내가 뭘 잘못하고 있니?

이이 현재 브라우저에서 {"name":"EnclliffeT"}을 반환 MySQLDao.php

public function getCommunities($email){ 

    $returnValue = array(); 
    $sql = "SELECT communities.name \n" 
. "FROM users \n" 
. "join community_players \n" 
. "on community_players.player_id=users.id \n" 
. "join communities \n" 
. "on communities.id=community_players.community_id \n" 
. "WHERE users.user_email = '".$email."'"; 

$result = $this->conn->query($sql); 
    if($result != null && (mysqli_num_rows($result) >= 1)){ 
     $row = $result -> fetch_array(MYSQLI_ASSOC); 
     if(!empty($row)){ 
      $returnValue = $row; 
     } 
    } 
    return $returnValue; 
} 

에 다음 함수를 실행 userLogin.php

$communities = array(); 
$communities = $dao->getCommunities($email); 
echo json_encode($communities); 

에서입니다. 그러나 다른 4 개의 항목이 있어야합니다.

+0

이 – RiggsFolly

+0

'$ 행 = $ 결과를 설정 -> fetch_array (MYSQLI_ASSOC)'이에서 $의 대체되어 while 루프 – RiggsFolly

답변

1

:

시도는 다음과 같이 변경을 적용합니다. 이러한 라인을 교체 : 다음과

if($result != null && (mysqli_num_rows($result) >= 1)){ 
    $row = $result -> fetch_array(MYSQLI_ASSOC); 
    if(!empty($row)){ 
     $returnValue = $row; 
    } 
} 

을 :

if($result != null && (mysqli_num_rows($result) >= 1)){ 
    while($row = $result -> fetch_array(MYSQLI_ASSOC)){ 
     if(!empty($row)){ 
      $returnValue[] = $row; 
     } 
    } 
} 
+0

echo json_encode ($ communities)가 Xcode에 문제를 던지고 있습니다. 배열을 반환하는 것과 관련이 있습니까? – RDowns

+0

오류 도메인 = NSCocoaErrorDomain 코드 = 3840 "끝에 쓰레기." UserInfo = {NSDebugDescription = 끝에 쓰레기} – RDowns

+0

'contentType' 헤더를'application/json'으로 설정 했습니까? – NaijaProgrammer

1

public function getCommunities($email){은 SQL 쿼리에서 반환되는 숫자의 수와 상관없이 첫 번째 행만 가져옵니다. 귀하의 코드는 첫 번째 행을 가져 오는됩니다

$results = array(); 
while ($row = $result->fetch_array(MYSQLI_ASSOC)) 
    $results[] = $row; 
} 

return $results; 
+0

에 있어야 행 = $ 결과 -> 가져 오기 .... 또는 다른 위치에 넣을 수 있습니까? – RDowns

0

쿼리는 결과 집합을 생성합니다. 결과 집합은 0 ~ n 개의 행을 포함 할 수 있습니다. 따라서 일종의 루프에서 결과 집합 행을 행별로 언로드해야합니다. while 루프는이 작업을 수행하는 가장 좋은 방법입니다. 당신은 단지 결과에서 첫 번째 행을 받고 있기 때문에

public function getCommunities($email){ 

    // the query 

    $result = $this->conn->query($sql); 
    if (! $result) { 
     //report error somehow 
     exit; 
    } 
    $returnValue = array(); 

    while ($row = $result -> fetch_array(MYSQLI_ASSOC)){ 
     $returnValue[] = $row; 
    } 
    return $returnValue; 
} 
관련 문제