日期:2014-05-17  浏览次数:20579 次

这样的嵌套查询,为什么查不到数据
数据表“Product”的结构和数据:



PHP code

include_once('conn.php');
$result = mysql_query("SELECT p_class FROM Product group by p_class limit 40");//第一查询,已经能成功获得数据
 mysql_data_seek($result, 0);
    while ($row=mysql_fetch_row($result))
    {
      for ($i=0; $i<mysql_num_fields($result); $i++ )
      {
       $tmp=$row[$i]; //把查询结果赋值为新变量:$tmp
       echo $tmp;//这里已经可以在web段显示正确的字段内容

       $result2 = mysql_query("SELECT * FROM Product where p_class=$tmp limit 0,4");//开始嵌套查询
       while ($row=mysql_fetch_row($result2))
    {    
            echo $row['pic'];     //这里查不到数据
            echo $row['p_class']; //同上
            echo $row['p_name'];  //同上
        }
      } 
    }   
mysql_free_result($result);
mysql_free_result($result2);
mysql_close($conn);



以上代码,循环次数已经正确,第一查询也是正确的,就是第二查询没数据。

------解决方案--------------------
你在while 里 $row=然后又 $row= ....第2个 $row 修改成 $row2=后面的保持一致,先这么改吧,我还没仔细看你代码。
------解决方案--------------------
这个跟你刚的问题是一样的
mysql_fetch_row
需要修改成 mysql_fetch_assoc()

一般 我们都返回关联数组
------解决方案--------------------
你这个使用的是
关联数组
echo $row['pic']; //这里查不到数据
echo $row['p_class']; //同上
echo $row['p_name']; //同上

所以你得返回关联数组 才能对上号嘛。。。如果你不是很明白可以将返回结果print_r 看看结构就知道了。

一般返回的都是关联数组,这样比较容易写代码.倒不是说只推荐,这个要看实际情况,大多数时候我们都是使用关联数组要多些.当然你也可以使用mysql_fetch_array这样返回了两种格式....