Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP MySql中按id和相关答案对注释进行排序_Php_Mysql_Comments - Fatal编程技术网

在PHP MySql中按id和相关答案对注释进行排序

在PHP MySql中按id和相关答案对注释进行排序,php,mysql,comments,Php,Mysql,Comments,我有一个MySql注释表。此表中的一些注释是“简单”注释,另一些是对注释的“回复”。此表包含一个“id”字段和一个“回复”字段,用于指示回复所指的注释。在下面的例子中,我有简单的注释1,4,7;评论2、3、6是对1的答复;评论5是对评论4的答复 我的目标是在PHP中检索和显示注释,首先按注释id排序,然后按回复排序。这样: 我想为每条评论创建一个MySql查询,以检索其回复;但我认为这是没有效率的,因为在这种情况下,我必须多次查询数据库(如果评论没有回复,大多数查询都没有结果)。有没有一种有

我有一个MySql注释表。此表中的一些注释是“简单”注释,另一些是对注释的“回复”。此表包含一个“id”字段和一个“回复”字段,用于指示回复所指的注释。在下面的例子中,我有简单的注释1,4,7;评论2、3、6是对1的答复;评论5是对评论4的答复

我的目标是在PHP中检索和显示注释,首先按注释id排序,然后按回复排序。这样:

我想为每条评论创建一个MySql查询,以检索其回复;但我认为这是没有效率的,因为在这种情况下,我必须多次查询数据库(如果评论没有回复,大多数查询都没有结果)。有没有一种有效的方法来实现这个目标?也许创建一个独特的MySql查询,然后用PHP详细说明结果?提前感谢。

您可以使用来获取数组的结果。 然后创建一个注释数组 比如:

这将创建一个包含回复数组的注释数组。

您可以使用该数组获取结果。 然后创建一个注释数组 比如:

这将创建一个包含回复数组的注释数组。

您可以使用该数组获取结果。 然后创建一个注释数组 比如:

这将创建一个包含回复数组的注释数组。

您可以使用该数组获取结果。 然后创建一个注释数组 比如:


这将创建一个包含一组回复的注释数组。

应该能够像这样在SQL中排序(我假设答复的空白值是空值)

在sqlfiddle上测试:-


应该能够像这样在SQL中排序(我假设答复的空白值为空)< /P> 在sqlfiddle上测试:-


应该能够像这样在SQL中排序(我假设答复的空白值为空)< /P> 在sqlfiddle上测试:-


应该能够像这样在SQL中排序(我假设答复的空白值为空)< /P> 在sqlfiddle上测试:-


评论是否通过其
id
链接到文章?实际上,评论也可能与特定文章无关。用户可以在收到服务后(即入住酒店后)留下这些信息。重要吗?我认为我的问题与评论表有关,而不是评论是否引用了文章。如果有帮助,您也可以认为简单的评论在“回复”字段上有“0”。评论是否通过其
id
链接到文章?实际上,评论也可能与特定文章无关。用户可以在收到服务后(即入住酒店后)留下这些信息。重要吗?我认为我的问题与评论表有关,而不是评论是否引用了文章。如果有帮助,您也可以认为简单的评论在“回复”字段上有“0”。评论是否通过其
id
链接到文章?实际上,评论也可能与特定文章无关。用户可以在收到服务后(即入住酒店后)留下这些信息。重要吗?我认为我的问题与评论表有关,而不是评论是否引用了文章。如果有帮助,您也可以认为简单的评论在“回复”字段上有“0”。评论是否通过其
id
链接到文章?实际上,评论也可能与特定文章无关。用户可以在收到服务后(即入住酒店后)留下这些信息。重要吗?我认为我的问题与评论表有关,而不是评论是否引用了一篇文章。如果有帮助的话,你也可以认为简单的评论在“回复”字段上有“0”。这简直太棒了@Kickstart!整洁有效。非常感谢。这真是太棒了@Kickstart!整洁有效。非常感谢。这真是太棒了@Kickstart!整洁有效。非常感谢。这真是太棒了@Kickstart!整洁有效。非常感谢你。
//assuming $result has array of all comments sorted in assending order of number of comments.
//array(0=>array('id'=>1,'comment'=>'Nice article','reply'=>''), 1=>....
$comments=array();
foreach($result as $value){
if($value['reply']!='')
 $comments[$value['id']]=array('comment'=>$value['comment'],'reply' => array());
else
 $comments[$value['reply']]['reply'][$value['id']]=$value['comment']
}
SELECT id, comment, reply
FROM comments_table
ORDER BY IF(reply IS NOT NULL, reply, id), id