1

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

我正在检索信息并根据标题中的用户名在个人资料页面中显示信息。

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

2 回答 2

1

由于您只对一行感兴趣,请使用fetch()而不是fetchAll()

$data = $sth->fetch();
于 2013-09-05T18:26:03.140 回答
0

在您的userDetails函数中,修复最后一条语句:

return $data[0];

(您可能还想预先检查是否$data[0]存在,如果不存在,则返回NULLFALSE抛出异常。)

于 2013-09-05T18:20:29.213 回答