Php 为什么第二个mysqli_fetch_assoc没有执行?

Php 为什么第二个mysqli_fetch_assoc没有执行?,php,mysqli,Php,Mysqli,我有两张桌子,评论和闲话。 Gossips有3列:id、userid、gossip。 Comments有4列:id、userid、gossipid、comment。 我写这段代码是为了让程序回应所有的流言和每个流言的评论 这段代码的输出只是回应流言,并没有执行第二个while循环。有什么问题吗?您第一次遍历$resultcomment结果集时会遍历整个结果集。当外部$result循环的第二次迭代启动时,将不再从第二个查询中获取更多的数据,因此实际上内部循环只针对$result集中的第一条记录运

我有两张桌子,评论和闲话。 Gossips有3列:id、userid、gossip。 Comments有4列:id、userid、gossipid、comment。 我写这段代码是为了让程序回应所有的流言和每个流言的评论

这段代码的输出只是回应流言,并没有执行第二个while循环。有什么问题吗?

您第一次遍历$resultcomment结果集时会遍历整个结果集。当外部$result循环的第二次迭代启动时,将不再从第二个查询中获取更多的数据,因此实际上内部循环只针对$result集中的第一条记录运行

既然您似乎在使用外部循环的数据过滤内部循环的结果,为什么不将内部查询基于相同的数据,这样您就不会在整个注释表中进行筛选,并扔掉除了匹配记录之外的所有内容?那是可怕的浪费

更像

SELECT * FROM gossips
while(fetch gossip) {
     SELECT * FROM comment WHERE id = gossip.id
}

这有点更有效,因为您只获取实际想要显示的注释。进一步的优化是将这两个查询重写为一个单独的连接查询,并使用一些循环逻辑来检测您在闲聊之间的切换。

首先,我要说if子句从不为真。你验证过了吗?如果我把SELECT FROM注释放在第1个while中,我总是会遇到同样的问题,因为在第1个while中我会有另一个mysqli\u fetch\u assoc。在这两种情况下,你也使用相同的查询字符串调用查询,所以你的$querycomment永远不会被执行:你只需运行$query两次。看,我按照你说的编辑了代码,仍然不起作用。请给我正确的语法。我需要一个答案。我想要正确的语法
SELECT * FROM gossips
while(fetch gossip) {
     SELECT * FROM comment WHERE id = gossip.id
}