我试图在函数中获取表中所有用户的列表,然后将列表返回到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'];
}
任何指针都会有很大的帮助。谢谢
答案 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
}