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

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 に答える