2012-02-02 2 views
5

나는 포인트라는 테이블에 2 개의 열을 가지고 있습니다. 2 개의 열은 UserPoints 및 UserID입니다.PHP에서 테이블의 합계를 에코하기

사용자의 총 포인트를 에코 할 수 있기를 원합니다.

나는 이것과 비슷한 것을 가지고있다. 그러나 나는 그 권리를 생각하지 않는다.

$getTotalPoints = mysql_query("SELECT SUM(UserPoints) FROM `Points` WHERE `UserID` = '1'") or die(mysql_error()); 
$totalPoints = mysql_fetch_array($getTotalPoints); 

위의 문장을 "$ totalPoints"를 반향하여 echo하면 "Array"가됩니다.

누구든지 올바른 쿼리를 알고 계십니까?

답변

4

Array$totalPoints에 저장되어 있으므로 얻을 수 있습니다. 코드를 자세히 살펴보면 배열로 결과 집합에서 결과 행을 검색하는 mysql_fetch_array() 함수가 사용 된 것을 볼 수 있습니다. 당신이 $totalPointsvar_dump() 할 경우 다음 볼 수 있습니다 :

Array 
(
    [0] => 12345 
    [SUM(UserPoints)] => 12345 
) 

당신이 찾고있는 합이 경우 SUM(UserPoints)에, 인덱스 0 또는 열 이름에있다, 그래서 당신은 출력이 echo $totalPoints[0] 또는 echo $totalPoints['SUM(UserPoints)']를 사용 할 수 있습니다 .

또는 mysql_result() 기능을 사용할 수 있습니다. 나는 이것이 당신이 기대했던 행동과 더 유사하다고 생각합니다. 결과 집합의 행에서 단일 값을 가져옵니다. 그래서, 대신 mysql_fetch_array()의 당신이 쓴 것 :

$totalPoints = mysql_result($result, 0); 

를 자세한 내용은 mysql_result()에서 PHP documentation for it을 확인하십시오.

옵션이있는 경우 mysql_ * 함수를 사용하지 않는 것이 좋습니다. PDO 또는 적어도 mysqli와 같은 새로운 인터페이스가 더 좋을 것입니다. 이것은 물론 프로젝트에 달려 있습니다 ... 큰 레거시 코드 기반으로 작업하는 경우 변경하기 어려울 수 있습니다.그러나 지금 시작한다면 더 새로운 라이브러리의 혜택을 누릴 수있을 것입니다. 내 의견을 볼 수 있으며 전환 확장에 대한 지침은 article I wrote입니다.

희망이 도움이되었습니다 ... 행운을 빌어 요!

+0

+1 멋진 기사입니다. –

1

mysql_fetch_array는 결과 행을 연관 배열, 숫자 배열 또는 둘 모두로 가져옵니다. 기본적으로 둘 다 만들어집니다. 당신이

$getTotalPoints = mysql_query("SELECT SUM(UserPoints) total FROM `Points` 
     WHERE `UserID` = '1'") or die(mysql_error()); 
$totalPoints = mysql_fetch_array($getTotalPoints); 
echo $totalPoints['total']; 
1

로 MYSQL_ASSOC 배열을 반환 당신이 요청 다시 작성하는 경우 모든 필요한 즉, echo $totalPoints[0];

에 또는. 따라서 $totalpoints을 배열로 처리해야합니다. 당신의 조각의 끝이 줄을 추가

시도 :

echo $totalPoints[0];

내가 PHP 매뉴얼에 그들에 대해 읽어 보시기 바랍니다 MySQL의 기능과 데이터를 검색하는 방법은 여러 가지가 있습니다.

여기 당신이 선택에있어 같은 mysql_fetch_array

1

결과 집합 행이 같은 많은 요소를 가진 배열이다. 당신은 단지 1 개의 원소 (합계) 만 가지고 있습니다. 그래야 할 사항 : echo $totalPoints[0]; 이런 종류의 문제를 디버깅해야한다면 print_r 기능에 대해 읽어 보시기 바랍니다.

관련 문제