Php Mysql计数,未按预期计数

Php Mysql计数,未按预期计数,php,mysql,sql,count,while-loop,Php,Mysql,Sql,Count,While Loop,我使用下面的脚本来计算记录,我认为它应该是这样工作的 “某个标题” x4 但它却在输出 “某个标题” 1x 1x 1x 1x include(“connectmysqli.php”); 如果(isset($_GET['questionnaireID']){$questionnaireID=$_GET['questionnaireID'];}其他{$questionnaireID='';} echo’查看问卷结果; $sql1=fetch_assoc()){ 回显$row1['COUNT(answ

我使用下面的脚本来计算记录,我认为它应该是这样工作的

“某个标题” x4

但它却在输出 “某个标题” 1x 1x 1x 1x

include(“connectmysqli.php”);
如果(isset($_GET['questionnaireID']){$questionnaireID=$_GET['questionnaireID'];}其他{$questionnaireID='';}
echo’查看问卷结果;
$sql1=fetch_assoc()){
回显$row1['COUNT(answer1')。'X。$answer1.
; }
下面是该表的一个示例

因此,使用上面的屏幕截图,列answer1在计数时应为2x,但实际显示的是1x

如果从phpmyadmin中的答案运行查询,我会得到:

使用
COUNT(*)
而不是
COUNT(answer1)
,你应该没问题

这是聪明的,有两个原因:第一,它可以快得多,第二,你是按
answer1
分组的,所以你不应该计算它

编辑这是一个摘要查询

    SELECT answer1, COUNT(*) AS cnt1
      FROM `QuestionnaireAnswers`
     WHERE questionnaireID='$questionnaireID'
  GROUP BY answer1
它为
answer1
的每个不同值生成一行,显示该行在原始表中出现的次数。您显示的示例数据仅包含两行。其中一个答案是2,另一个答案是8

使用
COUNT(*)
而不是
COUNT(answer1)
你应该没事

这是聪明的,有两个原因:第一,它可以快得多,第二,你是按
answer1
分组的,所以你不应该计算它

编辑这是一个摘要查询

    SELECT answer1, COUNT(*) AS cnt1
      FROM `QuestionnaireAnswers`
     WHERE questionnaireID='$questionnaireID'
  GROUP BY answer1

它为
answer1
的每个不同值生成一行,显示该行在原始表中出现的次数。您显示的示例数据仅包含两行。其中一个答案是2,另一个答案是8

您正试图在PHP中使用MySQL函数(
COUNT
)。我从未见过这样的用法。 使用别名进行应答次数1:

$sql1 = <<<SQL
    SELECT answer1, COUNT(*) as cnt
    FROM `QuestionnaireAnswers`
    WHERE questionnaireID='$questionnaireID'
    GROUP BY questionnaireID
SQL;

您正试图在PHP中使用MySQL函数(
COUNT
)。我从未见过这样的用法。 使用别名进行应答次数1:

$sql1 = <<<SQL
    SELECT answer1, COUNT(*) as cnt
    FROM `QuestionnaireAnswers`
    WHERE questionnaireID='$questionnaireID'
    GROUP BY questionnaireID
SQL;


问题回答者的表定义以及一些示例数据是什么?Ok Iv添加了一个表的屏幕截图尝试将相同的查询直接发送到phpmyadmin并检查您得到的结果。Ok我已经添加了上面的结果。如果您选择分组字段,您的分组依据通常有两个不同的值,8不是2,所以你会得到1和1,如果你有两次答案2,然后计数2将是2
问题回答者的表定义以及一些样本数据是什么?Ok Iv添加了一个表的屏幕截图尝试将相同的查询直接激发到phpmyadmin并检查您得到的结果。Ok我已经添加了上面的结果您正在选择分组字段,对于group by,你总是有两个不同的值,8不是2,所以你会得到1和1,如果你有两次答案2,那么2的计数将是2,我已经尝试过了,但它仍然会得到1x,然后按照Ollie Jones说的做。我已经更改了代码。我仍然得到1x 1x,如果我在phpmyadmin中运行它,我会得到一行2,另一行6的answer1,然后是另一个名为cnt1的列,一行1,另一行1下有一个。我在上面添加了一个屏幕截图。这是因为
GROUP BY answer1
。如果你移除它,你将得到你所需要的。或者你可以通过
questionnaireID
对它进行分组,谢谢,我已经尝试过了,但它仍然会给出1x,然后按照奥利·琼斯的话做。我已经更改了代码。我仍然得到1x 1x,如果我在phpmyadmin中运行它,我会得到一行2,另一行6的answer1,然后是另一个名为cnt1的列,一行1,另一行1下有一个。我在上面添加了一个屏幕截图。这是因为
GROUP BY answer1
。如果你移除它,你将得到你所需要的。或者你可以通过
questionnaireID
对它进行分组,我仍然得到1x,如果我在phpmyadmin中运行它,我会得到答案1,一行2,另一行6,然后是另一个名为cnt1的列,一行1,另一行1。我在上面添加了一个屏幕截图。你得到
6
?真正地很抱歉,我完全不理解这个评论。我仍然得到1x,如果我在phpmyadmin中运行它,我会得到一个答案1,一行2,另一行6,然后是另一个名为cnt1的列,一行1,另一行1。我在上面添加了一个屏幕截图。你得到一个
6
?真正地对不起,我一点也不理解这个评论。