【问题标题】:Multiple PHP WHILE loops using the same query使用相同查询的多个 PHP WHILE 循环
【发布时间】:2010-11-23 21:48:18
【问题描述】:
$query1 = "SELECT * FROM idevaff_affiliates";
$affiliateID = mysql_query($query1) or die(mysql_error());

这是我上面的查询 - 我想将它用于两个 WHILE 循环

第一个在header部分——设置jquery

while($row = mysql_fetch_assoc($affiliateID)){
}

第二个用于body中的while循环

while($row = mysql_fetch_assoc($affiliateID)){
}

为什么我不能让它工作? - 我确实让它工作了,但必须使用两个不同的变量使用相同的 SELECT 信息进行两个查询。

【问题讨论】:

    标签: php mysql loops


    【解决方案1】:

    你可以搜索第一行...使用 mysql_data_seek($affiliateID, 0),现在你可以再次执行 mysql_fetch_assoc()...无论如何,我更喜欢将结果加载到数组中。

    【讨论】:

      【解决方案2】:

      这不起作用,因为一旦您运行一次结果集,结果内部指针就在末尾。要再次使用它,您需要在第二个循环之前使用 mysql_data_seek 将内部指针重置为结果集的开头。

      【讨论】:

        【解决方案3】:

        调用mysql_fetch_assoc() 检索下一行(即,您尚未检索的下一行)。检索到所有行后,它会返回 false。因此,一旦您完成了第一个循环,您已经检索了所有行,而您每次得到的都是false

        如果你需要重复使用相同的数据两次,把它全部放在一个数组中怎么样?

        $rows = array();
        while($row = mysql_fetch_assoc($affiliateID)){ 
            $rows[] = $row;
        }
        

        现在您可以无限次地遍历$rows

        foreach($rows as $row) { ... }
        

        【讨论】:

        • @Wizzard 建议mysql_data_seek 倒带结果集是一个更好的选择。除此之外,它不会像这个答案那样通过将每一行存储在内存中来占用结果集上的大量 RAM。
        猜你喜欢
        • 1970-01-01
        • 2014-11-29
        • 2023-03-30
        • 2014-02-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-06-04
        • 2014-10-18
        相关资源
        最近更新 更多