2013-09-05 191 views
1

我试图从MySQL中检索特定的表数据并使用PHP来显示信息。应该足够简单来检索数据并打印它,但是只有在检索数据并尝试显示时才会得到未定义的索引。注意:未定义的索引| PHP MySQL

我正在检索信息并根据标题中的用户名在配置文件页面中显示信息。

if(isset($_GET['username'])) 
{ 
    $username   = $_GET['username']; 
    $profile_uid  = $Wall->useriD($username); 
    $profile_details = $Wall->userDetails($profile_uid); 
    $friend_count  = $profile_details['friendcount']; //issue here 
} else { 
    header('Location:404.php'); 
} 

我上未定义指数$ FRIEND_COUNT = $ profile_details [ 'friendcount'];但我不确定为什么,我相信一切检查正确,但显然不是。以下是我如何获取信息。

public function useriD($username) 
{ 
    $sth = $this->db->prepare("SELECT uiD FROM users WHERE username = :username AND status='1'"); 
    $sth->execute(array(':username' => $username)); 

    if($sth->rowCount() == 1) 
    { 
     $row = $sth->fetch(); 
     return $row['uiD']; 
    } else { 
     return false; 
    } 
} 

public function userDetails($uiD) 
{ 
    $sth = $this->db->prepare("SELECT * FROM users WHERE uiD = :uiD AND status='1'"); 
    $sth->execute(array(':uiD' => $uiD)); 

    $data = $sth->fetchAll(); 
    return $data; 
} 

问题是,当我试图显示这样的信息,我已经在它几个小时,我卡住了。任何线索都会很棒。

+4

做'var_dump($ profile_details)'。您将看到该阵列中可用的内容。请注意,fetchAll()将返回一个数组数组,而不仅仅是一个数据行作为数组。 –

+2

是啊,马克B说,所以它最有可能'$ profile_details [0] ['friendcount']',但请检查。 –

+0

你们是对的。谢谢你的支持。我一直想知道[0]代表什么,它是加载到头中的当前ID吗? – iBrazilian

回答

0

在你userDetails功能,修复的最后一条语句:

return $data[0]; 

(你可能还需要预检$data[0]是否存在,如果没有,返回NULLFALSE或抛出一个异常)

1

,因为你只在一排有兴趣,请fetch()代替fetchAll()

$data = $sth->fetch();