2

だから私は、おそらく簡単な解決策がある質問について頭を壁にぶつけています。これが私のコードです。

public function login($username, $password){

        $sql = "SELECT * FROM users WHERE username = :user AND password = :pass";
        $stmt = $this->pdo->prepare($sql);
        $data = array('user' => $username, 'pass' => md5($password . $this->salt));
        $stmt->execute($data);

        $status = $stmt->fetchColumn();
        if($status){
            echo "You are Logged in!";
            print_r($result);
        } else {
            echo $status;
            $this->error['alert'] = "You have not entered the correct login information.";
            Users::ErrorReport();
        }

    }

私がやりたいのは、そのユーザーの行からすべてのデータをプルして配列に格納し、クラス変数に格納するためにアクセスできるようにすることです。似たようなことをしたい

while($row = $stmt->fetchAll()){
   $this->username = $row['username'];
}

私がこれを行うときの問題は、私が百万の厄介なエラーに遭遇し、ネットを検索している間に解決策を見つけることができないことです。

4

1 に答える 1

4

fetch()の代わりに使用fetchAll()

while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
   $this->username = $row['username'];
}

fetchAll()または、必要に応じて、この方法を使用できます

$result_array = $stmt->fetchAll(PDO::FETCH_ASSOC)

更新: Venu は正しいです。連想のみを使用する場合、混合 (数値と連想) を使用するのは少し無駄です。したがって、使用することをお勧めしますPDO::FETCH_ASSOC

于 2012-06-25T06:59:00.797 に答える