Php Mysql计数,未按预期计数
我使用下面的脚本来计算记录,我认为它应该是这样工作的 “某个标题” x4 但它却在输出 “某个标题” 1x 1x 1x 1xPhp 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
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
?真正地对不起,我一点也不理解这个评论。