我有一个朋友正在使用FluxBB,他刚刚安装了这个论坛软件的一个修改版本。viewtopic.php文件有一个while循环,它在结果对象上执行mysql_fetch_assoc()。在这个循环中,在第二个result对象上有第二个mysql_fetch_assoc()。
嵌套的while循环的原因是有许多帖子,每个帖子都HasMany谢谢。
下面是一些代码,可以更好地说明我的意思:
$result = mysql_query("some-query");
while($cur_post = mysql_fetch_assoc($result)) {
// For every post, execute this second query
$secondResult = mysql_query("some-query that uses the $cur_post id");
while($thank_you = mysql_fetch_assoc($secondResult)) {
// Display the thank_you
}
}
问题是,当使用第二个mysql_query时,最外层的while循环仅在一次迭代后停止。如果再次运行第一个查询,那么它确实可以工作,这是一个非常糟糕的技巧,可以很好地与OFFSET配合使用。
在我看来,当运行第二个mysql查询时,无论$result指向什么,都是无效的。然而,我对PHP几乎一无所知,这就是为什么我会遇到这个问题。
你将如何着手解决这个问题?$result指针受第二个mysql查询的影响是正确的吗?
发布于 2010-08-10 07:23:46
mysql_query()向与指定link_identifier关联的服务器上的当前活动数据库发送唯一查询(不支持多个查询)。
您必须获取所有帖子(或一批帖子),并将it或所需的任何其他数据存储到一个数组或对象中,然后对其进行迭代,进行适当的查询并显示输出。
或者您可以使用一些sql,如下所示:
SELECT thank_you.* FROM thank_you, post WHERE post.id = thank_you.post_id ORDER BY thank_you.post_id;当然,这样你就失去了分组,你必须添加一些额外的逻辑来根据循环中的post_id是否发生了变化来构建适当的表示结构。
https://stackoverflow.com/questions/3444892
复制相似问题