我正在尝试从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;
}
问题是,当我试图显示这些信息时,我已经在那里待了几个小时而且我被卡住了。任何线索都会很棒。
答案 0 :(得分:1)
由于您只对一行感兴趣,请使用fetch()
代替fetchAll()
:
$data = $sth->fetch();
答案 1 :(得分:0)
在userDetails
函数中,修复最后一条语句:
return $data[0];
(您可能还需要预先检查$data[0]
是否存在,如果不存在,则返回NULL
,FALSE
或抛出异常。)