从MySQL表中获取PHP测验结果

时间:2015-06-30 14:36:05

标签: php mysql fetch

我在PHP中创建了一个多答案测验,用于将答案发布到MySQL中。没有正确的答案。有9个问题。问题是名称从a到i的单选按钮,多个答案的值为1到4.这是以下形式:

避免在公共交通工具上支付车费。
    1.没有理由。
    2.很少有理由     3.有时是合理的。
    4.始终合理。

如何以这两种形式获取结果:

  1. 在所有9个问题中选择了多少个1或2或3或4个值。
  2. 所有选定值的总和。
  3. 这是表格:

    CREATE TABLE `tests`.`integrity` 
     ( `id` INT(11) NOT NULL AUTO_INCREMENT , 
       `name` VARCHAR(255) NOT NULL ,
       `q1` VARCHAR(255) NOT NULL ,
       `q2` VARCHAR(255) NOT NULL ,
       `q3` VARCHAR(255) NOT NULL ,
       `q4` VARCHAR(255) NOT NULL ,
       `q5` VARCHAR(255) NOT NULL ,
       `q6` VARCHAR(255) NOT NULL ,
       `q7` VARCHAR(255) NOT NULL ,
       `q8` VARCHAR(255) NOT NULL ,
       `q9` VARCHAR(255) NOT NULL ,
        PRIMARY KEY (`id`)) ENGINE = MyISAM;
    
       $sql = "INSERT INTO integrity (name, q1, q2, q3, q4, q5, q6, q7, q8, q9)   
               VALUES ('$value1', '$value2', '$value3', '$value4', '$value5',   
               '$value6', '$value7', '$value8', '$value9', '$value10')";
    

    结果示例可能是:你得了9分 (如果为所有问题选择的值是1从不合理的话)

    最多15个: 你是一个非常诚实的人,他真的想做正确的事。 15到20 你的诚信度高于平均水平,但你不介意偶尔弯曲规则。 20到25 在适合你的情况下制定规则时你很放松,但你并不是从根本上说是不诚实的。 25加上你不相信按照规则生活,并且在适合你时很容易打破它们。

1 个答案:

答案 0 :(得分:1)

商Yipes。这里有各种数据完整性问题。您在varchar(255)列中有数字值。你已经排除了十个或更多问题的测验。并且您使用的MyISAM不提供事务完整性。而且你最好希望你的一个用户没有“johnny droptables”这个名字(查找)。

但不要介意所有这些。我们的开发人员抱怨它,因为我们的诚信。我们大多数人已经应对了太多黑客网站让它通过。让我们回答你的问题。

您可以通过这种方式检索每个人的总分。这按升序显示。

       SELECT name, q1+q2+q3+q4+q5+q6+q7+q8+q9 score
         FROM integrity
        ORDER BY q1+q2+q3+q4+q5+q6+q7+q8+q9 ASC, name

您可以像这样创建类似直方图的表格。这表明有多少人收到了每个不同的分数。

SELECT COUNT(*) number_of_people, scores.score
  FROM (
         SELECT name, q1+q2+q3+q4+q5+q6+q7+q8+q9 score
           FROM integrity
          ORDER BY q1+q2+q3+q4+q5+q6+q7+q8+q9
       ) scores
 GROUP BY scores.score
 ORDER BY COUNT(*) ASC, scores.score

请注意。这将默默地忽略以字母开头的值。

我建议你让这个工作,然后再问一下每个分数的分类。