我使用以下脚本来计算记录,我认为它应该是正常工作的方式。
'某些标题' X4
但它正在输出 '一些标题' 1X 1X 1X 1X
include("connectmysqli.php");
if (isset($_GET['questionnaireID'])) {$questionnaireID = $_GET['questionnaireID'];}else {$questionnaireID = '';}
echo '<p><strong>View Questionnaire Results</strong></p>';
$sql1 = <<<SQL
SELECT answer1, COUNT(answer1)
FROM `QuestionnaireAnswers`
WHERE questionnaireID='$questionnaireID'
GROUP BY answer1
SQL;
if(!$result1 = $db->query($sql1)){ die('There was an error running the query [' . $db->error . ']');}
while($row1 = $result1->fetch_assoc()){
echo $row1['COUNT(answer1)'] . ' X <strong>' . $answer1 . '</strong><br />';
}
以下是该表的示例
因此使用上面的屏幕截图,计数时的列answer1应为2x,但实际显示的是1x 1x
如果我从phpmyadmin的答案运行查询,我得到:
答案 0 :(得分:2)
使用COUNT(*)
代替COUNT(answer1)
,您应该没问题。
这很聪明有两个原因:第一,它可以快得多,其次,你按answer1
进行分组,所以你不应该计算它。
编辑这是一个摘要查询。
SELECT answer1, COUNT(*) AS cnt1
FROM `QuestionnaireAnswers`
WHERE questionnaireID='$questionnaireID'
GROUP BY answer1
它为answer1
的每个不同值生成一行,显示该行在原始表中出现的次数。您显示的示例数据仅包含两行。其中一个答案为2,另一个答案为8。
答案 1 :(得分:2)
您正在尝试在PHP中使用MySQL函数(COUNT
)。我从未见过这样的用法。
使用别名来计算answer1:
$sql1 = <<<SQL
SELECT answer1, COUNT(*) as cnt
FROM `QuestionnaireAnswers`
WHERE questionnaireID='$questionnaireID'
GROUP BY questionnaireID
SQL;
然后在fetch_assoc()
方法之后将其用作
echo $row1['cnt'];