mysql_fetch_array重置查询var吗?

时间:2012-03-23 02:52:42

标签: php mysql amfphp

例如,我有一个获取一些数据的mysql查询。然后根据它获得的一些数据运行另一个查询。

如果我只是返回第一个查询,在我的情况下$qOne。一切都很好。

但是,在使用我的while循环while ($row = mysql_fetch_array($qOne))后,它返回一个空数组。 (但我返回的第二个查询是否有效)

我试着看看是否可以将第一个查询“保存”在另一个var中,而不是像$savedResult = $qOne那样搞乱,然后我只返回$ savedResult但是没有用。

有谁知道如何在下方获取我的功能以返回两个结果?谢谢!

function getFoods($sort, $start, $limit) {

        $qOne = mysql_query("SELECT a.id, a.name, a.type, AVG(b.r) AS fra, COUNT(b.id) as tvotes FROM `foods` a LEFT JOIN `foods_ratings` b ON a.id = b.id GROUP BY a.id ORDER BY fra DESC, tvotes DESC LIMIT $start, $limit;");

        $i = 0;
        $qry = "";
        while ($row = mysql_fetch_array($qOne)) {
            $fid = $row['id'];
            if ($i > 0)
                $qry .= " UNION ";
            $i++;
            $qry .= "SELECT fid, ing, amount FROM foods_ing WHERE fid='$fid'";
        }

        $qTwo = mysql_query($qry);

        return array($qOne, $qTwo);
    }

1 个答案:

答案 0 :(得分:1)

当您返回两个查询结果资源时,请记住在您真正想要使用它们时需要从中获取它们。 (我们没有看到您实现该代码的代码。)

要在已经完成循环后使用$qOne,必须将其重绕回第一个位置。这是通过mysql_data_seek()

完成的
mysql_data_seek($qOne, 0);