2014-12-16 1 views
-2

사용자가 가지고있는 포인트 수를 표시하기 위해이 PDO 가져 오기를 얻으려고합니다. 그러나 단순히 "배열"출력 만 가져옵니다. 여기서 내가 잘못한 것은 무엇이며, 이보다 열에서 하나의 행을 가져 오는 더 쉬운 방법이 있습니까? 변경하여내 PDO 가져 오기가 포인트 수 대신 "배열"을 반환합니다.

// CONNECT TO DATABASE 
require 'database.php'; 

// FETCH POINTS 
$usernamedb = $_SESSION['user']; 
echo $usernamedb; 

$fetchpoints = $db->prepare("SELECT points FROM login WHERE username = '$usernamedb'"); 
$fetchpoints->execute(); 

$pointsfetched = $fetchpoints->fetchAll(); 
echo $pointsfetched; 
+0

PDO 준비 - http://stackoverflow.com/questions/1457131/php-pdo-prepared-statements – fortune

+1

이미 PDO를 사용하고 있기 때문에 , 준비된 문장을 채택 할 수도 있습니다. '? '플레이스 홀더를 바인딩하기 위해서'-> prepare ("SELECT .. WHERE x =?")와'-> execute (array ($ usernamedb)); (단지 문자열이 세션에서 시작 되었기 때문에 암시 적으로 제약을받지는 않습니다.) 죄송 합니다만보다 안전합니다!) – mario

+2

데이터베이스 연결을 사용하여 PHP로 작동하는 웹 사이트를 알지 못했을 때 알아낼 수없는) 배열에서 값을 읽는 방법? – GolezTrol

답변

1

단일 값을 쿼리에서 제외하려면 fetchAll()을 사용하여 배열/목록을 가져 오지 마십시오.

$pointsfetched = $fetchpoints->fetchObject()->points; 

종종 가장 간결한 옵션입니다.
(. fetchfetchObject 그냥 결과 세트에서 단일 행을 당겨)

+0

이것은 저에게 도움이되었습니다. 감사합니다 :) 왜 내가 전에 사용했던 것과 같은 방법을 사용할 수 없었는지 알지 못합니다. 최근에 업데이트가 있습니까? – PhyCoMath

+0

또 다른 질문 @ 마리오가 있는데 왜 작동하지 않습니까?'$ usernamedb = $ _SESSION [ 'user']; $ fetchone = $ db-> prepare ("SELECT profilepicture, name, points FROM login where username = '$ usernamedb'"); $ personalprofile = $ fetchone-> fetchAll(); echo " PhyCoMath

+0

That code and the array access actually look ok. What does 'print_r()' tell about the result list, and how does the resulting HTML output look ('view source', there's no closing ''>"img 태그 끝)? – mario

0

시작 :

echo $pointsfetched; 

에 : 그것은 작동하고 있는지

echo json_encode($pointsfetched); 

이, 당신에게 당신이 JSON 형식으로 인출 한 데이터가 표시됩니다. 다음과 같이 사용할 수 있습니다.

foreach ($pointsfetched as $point) { 
    echo $point; 
} 

모든 점을 표시합니다.

+0

이것으로 방금'd {{ "points": "12524", "0": "12524"}]'가되었습니다. 나는 이것에서 12524를 얻으려고 단순히 찾고있다. – PhyCoMath

0

변경 $ fetchpoints-> fetchAll() 에 $ fetchpoints-> fetchColumn()

만 대신 한 점의 배열의 형식화 된 VAR로 첫 번째 점을 얻을 것이다이 방법

+0

fetchColumn, 죄송합니다. – GPierre

1

PDO::fetch 또는 PDO::fetchAll을 모두 호출하면 배열이 반환됩니다. 당신은 단지 첫 번째 행에서 하나의 열을 얻고 싶은 경우에, 당신은

//Use 0 to get the first column 
$pointsfetched = $fetchpoints->fetchColumn(0); 

PDO::fetchPDO::fetchColumn 항상 다음 행의 배열을 돌려줍니다 사용해야합니다. (또는 false)

PDO::fetchAll은 항상 행 배열의 배열을 반환합니다. (또는 거짓)

관련 문제