开发者社区> 问答> 正文

while嵌套while循环,里面的while为什么只循环一次:报错

目前正在自学PHP中,想写一个留言本,带有留言和回复留言的功能。下面是其中的代码,第20行var_dump打印出来的结果再也面上只有一个,就是第一个,也就是说里面的while只循环了一次,这是为什么呢?

外面的while是循环读取留言的,里面的while是读取回复的,根据两张表intd和reply的id和reid是否相等判断回复的对应的留言然后按照输出的格式打印。

// 循环输出留言&回复
while($db_array = mysql_fetch_array($result))//查询的结果数组
{
    $content = nl2br($db_array['text']);//把content留言的每一行新行插入回车符
    echo $db_array['name'],' '.'<html></html>';//打印用户名
	echo '发表于:'.$db_array['datetime'].' ';
	echo '<a id="rs" method="get" action="reply.php" href="reply.php/?id='.$db_array['id'].'">回复</a>'.' ';
	echo '<td><a id="ds" method="get" action="delete.php" href="delete.php/?id='.$db_array['id'].'" onclick="return confirm(\'确定删除吗?删除后不能恢复\')">删除</a></td>'.'<br />';
    echo '内容:',nl2br($db_array['text']),'<br /><br />';//打印用户发表留言
	//打印回复
	while($db_huifu_array = mysql_fetch_array($liuyan_result))//循环读取回复数组
	{
		if($db_array['id'] == $db_huifu_array['reid']) 
		{
			
			echo '----------------------------------------------------------------------------------------------------------------<br />';
			echo $db_huifu_array['replyname'].' 回复于:',$db_huifu_array['redatetime'],'<br />';
			echo '内容:'.nl2br($db_huifu_array['retext']),'<br />';
			echo '<br />';
			var_dump($db_huifu_array['reid']);
		}
		
	}
	
    echo '<hr />';
	 /* var_dump($db_huifu_array['reid']); */
}



展开
收起
kun坤 2020-06-06 23:25:05 774 0
1 条回答
写回答
取消 提交回答
  • 先确定数据是否正确了~######$db_array是查询留言的结果,$db_huifu_array是查询回复的结果。sql语句在phpMyAdmin上测试过没问题。第一个while能够读完$db_array,但是第二个while就只能读$db_huifu_array的第一条数据。这个嵌套循环不是这样写?######$liuyan_result 查询在哪? ######感谢回复。 $liuyan_result = mysql_query($liuyan_sql,$conn); 是查询reply回复表的内容。查询的sql在数据库中测试过,应该没问题的。就是不知道if外部的while为啥不能读完$db_huifu_array呢?######

    还用问吗?

    if($db_array['id'] ==$db_huifu_array['reid'])

    肯定只有一次成立.

    内部while加log不就知道了?

    多加log, 查看while, if的条件.

    ######不懂php######if外部的while为啥不能读完$db_huifu_array呢?查询的sql在数据库测试过了,没错啊######面条混合式代码,看着累######回复 @songoex : 估摸着你还没学MVC,学了就晓得了######怎么避免这种代码呢?######混合着用,还在学习,请多包涵######

    可以在第二个while里面print_r($db_huifu_array);

    看看是不是if没进入.

    ######在第二个while里面第一行打印$db_huifu_array后,页面上只有第一条留言有输出,其它的都没有。按照道理来说不应该的呀
    2020-06-06 23:25:10
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载