2012-03-23 32 views
-1

例如我有一个mysql查询获取一些数据。然后基于它获得的一些数据运行另一个查询。是否mysql_fetch_array重置查询var?

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

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

我试图看看我是否能够保存第一个查询在另一个变种我没有搞这样$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); 
    } 
+0

为什么这样做downvoted?我以前从来没有听说过mysql_data_seek(),或者之前有任何重置mysql_query()的概念。但现在我明白了,希望别人能从中学习。 – brybam 2012-03-23 03:08:12

+0

如果你需要mysql_data_seek(),你做错了什么。 – 2012-03-23 03:10:41

+0

我对mysql/php很新。只是想学习。你的评论没有教我任何东西。 – brybam 2012-03-23 03:23:49

回答

1

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

要使用$qOne后,您已经通过它,你必须倒回到第一个位置。这与mysql_data_seek()

mysql_data_seek($qOne, 0); 
+0

抱歉,在stackoverflow上输入错误。在我的代码中不是这样的。真的很抱歉。 – brybam 2012-03-23 02:59:34

+0

@brybam那么,仍然有寻求问题:) – 2012-03-23 03:01:23

+0

啊,很酷,做到了。有点奇怪,它需要像重新缠绕。它说我可以在一分钟内标记你的答案。谢谢! – brybam 2012-03-23 03:06:53