首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >嵌套的mysql_query() -重置第一个结果的指针?

问嵌套的mysql_query() -重置第一个结果的指针?
EN

Stack Overflow用户
提问于 2010-08-10 07:15:26
回答 1查看 682关注 0票数 3

我有一个朋友正在使用FluxBB,他刚刚安装了这个论坛软件的一个修改版本。viewtopic.php文件有一个while循环,它在结果对象上执行mysql_fetch_assoc()。在这个循环中,在第二个result对象上有第二个mysql_fetch_assoc()。

嵌套的while循环的原因是有许多帖子,每个帖子都HasMany谢谢。

下面是一些代码,可以更好地说明我的意思:

​

代码语言:javascript
复制
$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查询的影响是正确的吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-08-10 07:23:46

mysql_query()向与指定link_identifier关联的服务器上的当前活动数据库发送唯一查询(不支持多个查询)。

您必须获取所有帖子(或一批帖子),并将it或所需的任何其他数据存储到一个数组或对象中,然后对其进行迭代,进行适当的查询并显示输出。

或者您可以使用一些sql,如下所示:

代码语言:javascript
复制
SELECT thank_you.* FROM thank_you, post WHERE post.id = thank_you.post_id ORDER BY thank_you.post_id;

当然,这样你就失去了分组,你必须添加一些额外的逻辑来根据循环中的post_id是否发生了变化来构建适当的表示结构。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3444892

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档