MySQL查询相同idUsers的所有行 实现个人页用户帖子展示
问题原因
你调用的fetch()是PDO结果集对象的单行读取方法,每次执行只会返回结果集中的下一条记录,没有后续调用的情况下自然只能拿到第一条匹配数据。要获取同一个用户的全部帖子,需要使用一次性读取所有结果的fetchAll()方法。
正确实现代码
public function fetchDataPost($id){ global $pdo; $query = $pdo->prepare("SELECT * FROM posts WHERE idUsers = ?"); $query->bindValue(1, $id); $query->execute(); // 改用fetchAll获取所有匹配记录,指定返回关联数组更方便业务处理 return $query->fetchAll(PDO::FETCH_ASSOC); }
补充说明
- 上述代码返回的是二维关联数组,遍历该数组即可输出该用户的所有帖子内容。你也可以通过循环调用
fetch()的方式实现相同效果,写法如下:$posts = []; while ($post = $query->fetch(PDO::FETCH_ASSOC)) { $posts[] = $post; } return $posts; - 如果需要按发布时间倒序展示(最新的帖子排在最前),可以把SQL语句调整为
SELECT * FROM posts WHERE idUsers = ? ORDER BY dateCreatedPosts DESC,更符合个人主页帖子的展示逻辑 - 测试环境中传入用户id=1时,返回结果会包含你提供的两条测试记录,可直接渲染到页面
内容的提问来源于stack exchange,提问作者Gem Eliezer Espiritu
相关产品推荐
相关产品推荐

