Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将错误问题和答案的统计信息保存到数据库_Php_Mysql - Fatal编程技术网

Php 将错误问题和答案的统计信息保存到数据库

Php 将错误问题和答案的统计信息保存到数据库,php,mysql,Php,Mysql,我正在做一个问答游戏,我想对回答错误的问题进行统计 我有一个包含3个表的数据库:问题(所有问题),答案(每个问题的备选方案),游戏(每个游戏会话的统计数据) 现在我正在考虑两种替代方法来解决这个问题 将每个问题ID保存到数组中,然后保存数组 游戏结束时,在MySQL中创建一条记录 针对每个错误,在表中插入一条带有问题ID的新记录 回答 以下哪个选项是解决我的问题的最佳方法?如果我是正确的,当我查询数据库以显示回答错误的问题时,最后一个问题会更容易。如有任何意见或建议,将不胜感激 我不确定我是否正

我正在做一个问答游戏,我想对回答错误的问题进行统计

我有一个包含3个表的数据库:问题(所有问题),答案(每个问题的备选方案),游戏(每个游戏会话的统计数据)

现在我正在考虑两种替代方法来解决这个问题

  • 将每个问题ID保存到数组中,然后保存数组 游戏结束时,在MySQL中创建一条记录
  • 针对每个错误,在表中插入一条带有问题ID的新记录 回答

  • 以下哪个选项是解决我的问题的最佳方法?如果我是正确的,当我查询数据库以显示回答错误的问题时,最后一个问题会更容易。如有任何意见或建议,将不胜感激

    我不确定我是否正确理解了你的问题。如果您需要每个问题/答案的详细信息,以下是答案表统计的可能解决方案:

    CREATE TABLE GAME_STATS (ID INT NOT NULL, ID_QUEST INT, ID_ANSWER INT, NUM INT);
    
    ID是一个序列(你可以省略它,让PK ID\u任务,ID\u答案) ID_QUEST指的是表格问题的ID ID\u答案是指表格答案的ID。 NUM是选择答案的次数

    你可以考虑为所有可能的问题/答案预先填充表格(num=0)。 在每个答案的末尾,您应该更新ID_任务、ID_答案的NUM(+1)

    如果要为每个会话/用户注册统计信息,则应添加适当的列(例如id\u session和/或user\u id)。
    在这种情况下,不能预填充表。您只能注册错误的答案。

    我的建议是将给出的每个答案保存到单独的一行中,完全按照您所述的原因。查询这样的结构要比将多个答案存储在一行中容易得多

    我将按如下方式组织表格

    Question
    ID | Text | whatever else you may need
    
    Answer
    ID | QuestionID | Text | IsCorrect | whatever else you may need
    
    Game
    ID | User | StartTime | EndTime | whatever else you may need
    
    Stats
    ID | GameID | QuestionID | AnswerID | AnswerTime | whatever else you may need
    
    这需要根据您计划对其进行的分析类型进行调整,但您得到了这个想法

    计算一个错误答案被给出的次数非常简单

    select  t1.ID, count(*)
    from    Answer t1
    join    Stats t2
    on      t1.ID = t2.AnswerID
    where   t1.IsCorrect = 'N'
    group by t1.ID
    

    我会选择2,但我不会为每一个错误的答案创造新的记录。相反,我只是将错误回答的问题插入一个由逗号分隔的字段中。这样可以保存行。