gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 08:38:08 26 4
gpt4 key购买 nike

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

嵌套while循环的原因是帖子很多,每个帖子HasMany thank-you's。

这里有一些代码可以更好地说明我的意思:


$result = mysql_query("some-query");<br/>
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 循环仅在一次迭代后就停止了。如果再次运行第一个查询,它确实有效,这是一个非常肮脏的 hack,可以很好地与 OFFSET 一起工作。

在我看来,当第二个 mysql 查询运行时,无论 $result 指向什么都无效。但是,我几乎不了解 PHP,所以这就是为什么我会遇到这个问题。

您将如何解决这个问题? $result 指针受第二个 mysql 查询影响是否正确?

最佳答案

mysql_query() sends a unique query (multiple queries are not supported) to the currently active database on the server that's associated with the specified link_identifier.

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

或者你可以像这样使用一些sql:

SELECT thank_you.* FROM thank_you, post WHERE post.id = thank_you.post_id ORDER BY thank_you.post_id;

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

关于php - 嵌套的 mysql_query() - 重置第一个结果的指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3444892/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com