php函数返回数据库表中的用户列表

时间:2013-12-29 18:30:57

标签: php arrays pdo

我试图在函数中获取表中所有用户的列表,然后将列表返回到php页面。我想我错过了一些细节,因为我无法得到任何回报。我是OOP和PDO的新手,因此我无法确定问题。

这是函数

public function get_users() {

    $query = $this->db->prepare("SELECT * FROM `users` ");

    try{
                    $results = array();
        $query->execute();
        while($rows = $query->fetch_assoc())
                {
                    $results[] = $rows;
                }
    }catch(PDOException $e){
        die($e->getMessage());
    }

    return $results;

}   

在页面中:

$user_list  = $users->get_users();
foreach ($user_list as $ul) {
    echo $ul['username'];
}

任何指针都会有很大的帮助。谢谢

3 个答案:

答案 0 :(得分:4)

变化:

    while($rows = $query->fetch_assoc())
            {
                $results[] = $rows;
            }

为:

    while($rows = $query->fetch(PDO::FETCH_ASSOC))
            {
                $results[] = $rows;
            }

或:

    $results = $query->fetchAll(PDO::FETCH_ASSOC);

PDO中没有fetch_assoc方法,那就是mysqli。

答案 1 :(得分:2)

首先,没有必要准备这个陈述。没有任何绑定参数,所以它没有意义(恕我直言)。你可以这样做,但由于你不会多次运行查询,所以没有任何好处。

其次,您可以在实例化或获取时设置\PDO::FETCH_ASSOC。再好吧,恕我直言。

最后,如果你使用\PDOStatment::fetchAll(),你已经返回了一个数组,所以不需要构建那个数组。

您新的,更简单的功能看起来像这样(未经测试):

public function get_users()
{
    try {
        return $this->db
            ->query("SELECT * FROM `users`")
            ->fetchAll(\PDO::FETCH_ASSOC);
    } catch (\PDOException $e) {
        die($e->getMessage());
    }
}

答案 2 :(得分:1)

您已忘记将$results初始化为数组并返回$results而不是$results[]

public function get_users() {

    $query = $this->db->prepare("SELECT * FROM `users` ");
    $results=array();
    try{
        $query->execute();
        while($rows = $query->fetch_assoc())
                {
                    $results[] = $rows;
                }
    }catch(PDOException $e){
        die($e->getMessage());
    }

    return $results;//correct your return also

}