1

我正在使用以下脚本来计算记录,我认为它应该工作的方式应该是。

'一些标题' 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 中的答案运行查询,我会得到:

在此处输入图像描述

4

2 回答 2

2

使用COUNT(*)代替,COUNT(answer1)你应该没问题。

这很聪明,有两个原因:首先,它可以快得多,其次,你是分组的,answer1所以你不应该计算它。

编辑这是一个摘要查询。

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

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

于 2013-06-20T12:23:04.297 回答
2

您正试图COUNT在 PHP 中使用 MySQL 函数 ( )。我从未见过这样的用法。使用别名作为 answer1 的计数:

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

然后在fetch_assoc()方法使用它作为

 echo $row1['cnt'];
于 2013-06-20T12:23:15.243 回答