【问题标题】:foreach inside foreach to combine two mysql queries resultsforeach里面foreach合并两个mysql查询结果
【发布时间】:2019-06-28 11:34:16
【问题描述】:

我的查询生成两个结果,例如

然后我尝试使用两个带有两个 while 循环的数组来提取结果

while ($rowPost = mysqli_fetch_assoc($grabPostsQuery)) { 
  $posts[] = $rowPost;            
}
while ($rowComment = mysqli_fetch_assoc($grabCommentsQuery)) {
   $comments[] = $rowComment;
}

$grabPostsQuery = "SELECT * FROM posts ORDER BY postDate DESC";
$grabPostsQuery = mysqli_query($link, $grabPostsQuery);
$grabCommentsQuery = "SELECT * FROM comments ORDER BY commentDate DESC";
$grabCommentsQuery = mysqli_query($link, $grabCommentsQuery);

然后我做了一个嵌套的foreach,如下所示

foreach($posts as $post) {
   foreach($comments as $comment) {
       echo $post['postContent']."<br>";
       echo $comment['commentContent']."<br>";
   }
}

我可以同时访问帖子和 cmets,唯一的问题是 foreach 循环在帖子和 cmets 中循环多次,然后显示两次

有什么帮助吗?

【问题讨论】:

  • 为什么不使用 JOIN?
  • 如何加入显示结果是不合时宜的,因为排序不符合预期
  • 在这里使用 JOIN ..
  • 我不理解不合时宜的意思。听起来像特朗普主义(或丛林主义)
  • 我希望能回答您的问题,感谢您的接受,点赞也不错:D

标签: php mysql foreach


【解决方案1】:

只需单独运行你的循环,而不是一个在另一个里面......:

foreach($posts as $post) {
  echo $post['postContent']."<br>";
}
foreach($comments as $comment) {
  echo $comment['commentContent']."<br>";
}

【讨论】:

  • 我需要将它们结合起来我该怎么做?
  • 合并到底是什么意思?从您显示的查询来看,posts 表和 cmets 表可能完全不相关...我想您应该稍微重构一下您的 SQL... :-) 首先,找到哪些字段 link两张表(如果有的话)...
  • 是的,他们没有共同点,我想混合显示结果
  • 他希望他的查询使用诸如连接 post 和 cmets 的连接查询之类的东西
  • 请给出一个join示例,然后可以获取posts date content id和cmets date content ids
猜你喜欢
  • 1970-01-01
  • 2015-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-08
  • 1970-01-01
  • 2011-04-05
  • 1970-01-01
相关资源
最近更新 更多