2013-05-20 2 views
0

안녕하세요 여러분, PHP에서 PDO에 약간의 문제가 있습니다. 반환되는 오류는 정의되지 않은 색인입니다. 내가주의라는 오류를 얻을 색인 페이지의 코드를 실행할 때PHP 데이터베이스 PDO 연결

function getUserDetails($user) { 
    $db = connect(); 
try { 
    $stmt = $db->prepare('SELECT name,addr AS address,team 
FROM TreasureHunt.Player LEFT OUTER JOIN TreasureHunt.MemberOf ON (name=player) 
LEFT OUTER JOIN TreasureHunt.PlayerStats USING (player) 
WHERE name=:user'); 

    $stmt->bindValue(':user', $user, PDO::PARAM_STR); 

    $stmt->execute(); 
    $results = $stmt->fetchAll(); 
    $stmt->closeCursor(); 

} catch (PDOException $e) { 
    print "Error : " . $e->getMessage(); 
    die(); 
} 
return $results; 
} 

그러나 : 정의되지 않은 인덱스를 다음에 대한

코드를 이름 기능과 쿼리 및 결과의 반환 코드는 다음입니다 색인은 다음과 같습니다.

try { 
$details = getUserDetails($_SESSION['player']); 
echo '<h2>Name</h2> ',$details['name']; 
echo '<h2>Address</h2>',$details['address']; 
echo '<h2>Current team</h2>',$details['team']; 
echo '<h2>Hunts played</h2> ',$details['nhunts']; 
echo '<h2>Badges</h2>'; 
foreach($details['badges'] as $badge) { 
    echo '<span class="badge" title="',$badge['desc'],'">',$badge['name'],'</span><br />'; 
} 
} catch (Exception $e) { 
echo 'Cannot get user details'; 
} 

내 질문은 왜이 문제를 고발하고 어떻게이 문제를 해결할 수 있습니까?

+0

무엇이'$ db = connect();'입니까? db와 어떻게 연결합니까? 오류의 내용은 무엇입니까? 당신은 너무 적은 세부 사항을 넣습니다. – Robert

+1

'var_dump ($ details);'를 사용하여 얻은 것을 확인하십시오. ** 참고 : **'.' (점)와의 에코 문 concat에', '가 없음 – Rikesh

+0

올바른 결과가없고 루프에서'$ details ['badges ']'등을 사용하므로 알림을 던질 수 있습니다. 이는 할당되지 않을 수 있습니다. @Rikesh는 var_dump 또는 print_r ($ details)을 사용하고 결과를 보여줄 것을 제안합니다. – Robert

답변

2

fetchAll 반환 다차원 배열의 모든 결과 (잠재적으로 여러 행) :

배열이 직접 인덱스 'name'이없는 이유
array(
    0 => array(/* first row */), 
    1 => array(/* second row */), 
    ... 
) 

, 그것은 [0]['name'] 할 필요가있다.
fetchAll 일 경우에만 fetch으로 설정하면 안됩니다.

+0

완벽한 감사합니다 :) – Indrick