所以我有一堆用户需要显示的内容。我从数据库中获取用户,然后显示它们。这是我正在做的事情
//Get users from DB
$stmt = $con->prepare("SELECT * FROM followers where follow_to = :user");
$stmt->bindValue(':user', $username, PDO::PARAM_STR);
$stmt->execute();
//Place results in an array
$posts = array();
while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
$posts = array(
'follow_from' => $row['follow_from']
);
}
//And loop users
foreach($posts as $post) {
$post;
?>
<?php
//Display users
echo $posts['follow_from']; }
?>
现在的问题是,我只返回一个结果。因此,如果我有一个以上的结果,它会被覆盖。你能帮忙的话,我会很高兴。
答案 0 :(得分:2)
$posts = array();
while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
$posts[$row['follow_from']] = 1;
}
foreach($posts as $key => $useless) {
//Display users
echo $key; }
答案 1 :(得分:2)
正如其他人所说,但没有在答案中发帖,你是在每个循环创建一个新数组,而不是将值附加或“推”到$ posts数组中。
$posts = array();
while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
$posts[] = array(
'follow_from' => $row['follow_from']
);
}
foreach($posts as $post) {
// $post is equal to $posts[n] where n is the index of the current loop 0,1,2,...
echo $post['follow_from'];
}
&GT;
您会注意到我在[]
的末尾添加了$posts
,这将在数据中插入新的数字元素。您也可以使用array_push()
,但速度通常较慢。
上面的代码将输出一个类似于以下内容的数组。
$posts = array(
array('follow_from',data),
array('follow_from',data),
array('follow_from',data),
...
);
关于向数组附加值的示例,您可以查看以下代码。
$array = array('value 1');
$array[] = 'value 2';
array_push($array,'value 3');
print_r($array);
/*
Array(
[0] = "value 1"
[1] = "value 2"
[2] = "value 3"
)
*/
答案 2 :(得分:2)
您可以在while循环中使用$row['follow_from']
。
但是,根据您当前的操作,您可能希望使用PDOStatement::fetchAll直接填充您的帖子数组。
$posts = $stmt->fetchAll();
foreach($posts as $post) {
echo $post['follow_from'];
}
答案 3 :(得分:1)
使用fetchAll()
代替fetch()