认真排版了一下HTML,然后慢慢填空,总算把之前发了两个帖子问关于嵌套循环查询的问题解决了。但是,新问题出现,语法写得不正确,标注出来了,麻烦大家指教一下:
<?php
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++ )
{
?>
<table border="1">
<tr>
<td><?php echo "$row[$i]";?></td>
<td>more</td>
</tr>
<tr>
<td colspan="2">********</td>
</tr>
</table>
<table border="1">
<tr>
<?php
$result2 = mysql_query("SELECT * FROM Product where p_class=$row[$i] limit 0,4");
while ($row=mysql_fetch_row($result2))
{
?>
<td>
<table border="1">
<tr><td>
<img src=<?php echo $row['pic'];?> />//这里报错,说写法不对
</td></tr>
<tr><td>
<?php echo $row['p_class'];?>//这里报错,说写法不对
</td></tr>
<tr><td>
<?php echo $row['p_name'];?>//这里报错,说写法不对
</td></tr>
</table>
<br />
</td>
<?php
}
?>
</tr>
</table>
<?php
}
}
mysql_free_result($result);
mysql_free_result($result2);
mysql_close($conn);
?>
多谢!
<?php
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++ )
{
?>
<table border="1">
<tr>
<td><?php echo "$row[$i]";?></td>
<td>more</td>
</tr>
<tr>
<td colspan="2">********</td>
</tr>
</table>
<table border="1">
<tr>
<?php
$result2 = mysql_query("SELECT * FROM Product where p_class=$row[$i] limit 0,4");
while ($row=mysql_fetch_row($result2))
{
?>
<td>
<table border="1">
<tr><td>
<img src=<?php echo $row['pic'];?> />//这里报错,说写法不对
</td></tr>
<tr><td>
<?php echo $row['p_class'];?>//这里报错,说写法不对
</td></tr>
<tr><td>
<?php echo $row['p_name'];?>//这里报错,说写法不对
</td></tr>
</table>
<br />
</td>
<?php
}
?>
</tr>
</table>
<?php
}
}
mysql_free_result($result);
mysql_free_result($result2);
mysql_close($conn);
?>
多谢!
Notice: Undefined index: pic in D:\setup\xampp\htdocs\test.php on line 32
Notice: Undefined index: pic in D:\setup\xampp\htdocs\test.php on line 33=====这三行分别对应上文PHP代码中的三行。 <table border="1">
<tr><td>
<img src=<?php echo $row['pic'];?> />//这里报错,说写法不对
</td></tr>
<tr><td>
<?php echo $row['p_class'];?>//这里报错,说写法不对
</td></tr>
<tr><td>
<?php echo $row['p_name'];?>//这里报错,说写法不对
</td></tr>
</table>
这是一个提示,告诉你数组的一个键 pic 没有定义,也就是没有 $row['pic']。
再直白一点,就是你数据库的 Product 表中没有 pic 这个列
不能啊,我查了,表product中确实有这三个列。难道不是写法错了?Notice: Undefined index: pic in D:\setup\xampp\htdocs\test.php on line X
Notice: Undefined index: p_class in D:\setup\xampp\htdocs\test.php on line X
Notice: Undefined index: p_name in D:\setup\xampp\htdocs\test.php on line X
明白,内值为空时就报错。但是我查了,该表内,确实是有值的。P_CLASS字段在WEB上已经能带出来了。不知道是不是下面这句写错了,导致后面无值的呢:
$result2 = mysql_query("SELECT * FROM Product where p_class=$row[$i] limit 0,4");where p_class=$row[$i]//这句下的条件,应该有问题,但是我不知道p_class= 后面应该怎么改写,能否麻烦您指点一番?
不行,还是带不出值来,报错:Notice: Undefined index: $i in D:\setup\xampp\htdocs\test.php on line 2525行的内容是:$result2 = mysql_query("SELECT * FROM Product where p_class='{$row['$i']}' limit 0,4");我在想,是不是应该联系上文中用于写标题的这句:<?php echo "$row[$i]"; ?>,把"$row[$i]"赋值给一个变量,供后面的where语句去查询。但是我试了几次写法,都不正确。
"SELECT * FROM Product where p_class='{$row[$i]}' limit 0,4"
这样可以吗?如果还有什么异常提示的话 输出这个SQL
echo "SELECT * FROM Product where p_class='{$row[$i]}' limit 0,4"
改了还是不行,我打印出来那句SQL如下,已经是正确的了,可是为啥带不出来数据呢?SELECT * FROM Product where p_class='111' limit 0,4
结果如下:莫非是后面的ROW()函数出错了
你可以换用 mysql_fetch_assoc(); 他将返回一个关联数组,也就时键名为列名的数组
牛!谢谢我把被嵌套的那个mysql_fetch_row改成mysql_fetch_assoc,就搞定了!这两个函数的区别是什么呢?