Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/279.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.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中不同行的数量_Php_Mysql_Comments - Fatal编程技术网

Php 计算MySQL中不同行的数量

Php 计算MySQL中不同行的数量,php,mysql,comments,Php,Mysql,Comments,我正在用PHP/MySQL构建一个评论系统。这个评论系统有一个很好的功能,它允许用户突出显示文本(在数据库中存储为“selected_text”),然后突出显示的文本将与用户的评论一起存储在数据库中。此外,我还将段落(其中突出显示的文本)存储为INT。这些值都正确地存储在数据库中,但现在我想对它们进行处理 我想创建“评论计数器”。这些评论计数器将放在文章中每个段落的旁边,它们将显示对所附段落的评论总数。“注释”的视觉概述:表格结构: 我最近尝试检索此信息的查询是: $distinct=mysq

我正在用PHP/MySQL构建一个评论系统。这个评论系统有一个很好的功能,它允许用户突出显示文本(在数据库中存储为“selected_text”),然后突出显示的文本将与用户的评论一起存储在数据库中。此外,我还将段落(其中突出显示的文本)存储为INT。这些值都正确地存储在数据库中,但现在我想对它们进行处理

我想创建“评论计数器”。这些评论计数器将放在文章中每个段落的旁边,它们将显示对所附段落的评论总数。“注释”的视觉概述:表格结构:

我最近尝试检索此信息的查询是:

$distinct=mysql_查询(“从注释中选择计数(不同段落id))

以及相应的PHP代码:

while ($result_three = mysql_fetch_array($distinct)) 
{ 
    echo $result_three['paragraph_id'];
}
现在,我想我可能走错了方向。我曾考虑尝试运行一个查询,首先查找所有的
不同段落ID
。接下来,我将对每个循环运行一个for循环,计算那些
段落ID
出现的次数


我现在处理的查询似乎没有达到我的目标。此外,我还担心没有一种明确的方法可以让我清楚地将统计的数据附加到“评论计数器”上。

如果我正确理解了您的问题,您需要
按段落\u id
分组。试试这个:

SELECT paragraph_id, COUNT(*)
FROM comments
GROUP BY paragraph_id

使用下面的代码,这应该是可行的

$res = mysql_query("SELECT COUNT(DISTINCT paragraph_id) as cnt FROM comments");

while ($result_three = mysql_fetch_assoc($res)) { echo $result_three['cnt']; }

你可能还想知道什么时候没有评论,你需要对段落进行外部连接

SELECT p.paragraph_id,
       COUNT(c.comment_id) as comment_count 
FROM   comments c 
       RIGHT JOIN paragraphs p 
         ON c.paragraph_id = p.paragraph_id 
GROUP  BY p.paragraph_id 

这是一个有效的

基本上,您需要统计每组段落ID中的注释。正确的查询如下:

$distinct = mysql_query("SELECT paragraph_id, (DISTINCT comment_id) as comment_count FROM comments GROUP BY paragraph_id");

while ($result_three = mysql_fetch_array($distinct)) 
{ 
    echo $result_three['paragraph_id']; // Gives the id of the paragraph
    echo $result_three['comment_count']; // Gives the comment count for the associated paragraph
}

这很接近。它统计唯一段落ID的数量。它打印出来的值是3。不完全是我要找的。我正在尝试检索这样的内容:对于每个唯一的段落id,计算对该段落id的评论总数。否,它将返回提及每个
段落id
的评论数(在
评论
表上的行)。在phpMyAdmin上运行这个来了解我的意思。天哪,对不起,你是对的。我道歉。使用PHP时,我得到了不同的结果。我认为问题在于我没有从fetch_数组中引用正确的键。最终对我有用的是结合了一些答案,并最终调用了一个别名。谢谢你的帮助!这是赢家。我最终修改了这段代码,排除了连接组件,并在注释计数之前包含了一个“AS”。然后我必须在PHP中回显的是
echo$result=['comment\u count']谢谢!谢谢,这是构建我的查询的一个很好的基准,这也是正确的。我试图用附加的PHP代码来回答我自己的问题,但这不会让像我这样的新手在发布问题后的8小时内堆栈溢出谢谢。