在MySQL数据库表中存储多个字符串

时间:2013-03-28 12:10:35

标签: php html mysql phpmyadmin

在我提出问题之前,我只想感谢昨天回答我问题的所有人 - > Countdown using javascript

想法:

我使用php创建了一个测验,但是我想创建一个MySQL数据库并拥有一个包含所有问题,答案和存储在内的多项选择的表格。

问题:

由于测验是多项选择,我不知道如何在表格中存储多项选择。我可以存储选项并将每个答案用特殊字符分隔,让php获取字符串并分离选项吗?

Ex:问题:你最喜欢的颜色是什么?选项:蓝色=红色=紫色=黄色。(数据库视图)

你们认为这样的人最好的做法是什么?

6 个答案:

答案 0 :(得分:2)

我认为最佳做法是使用多个表格。一个用于问题,一个用于答案。 answer表将包含question_id以及一个标志,无论它是否是正确的答案

看起来像这样

TABLE questions
FIELDS: id, text

TABLE answers
FIELDS: id, question_id, text, correct

对所有答案使用一个字段的问题是,您可能会意外地使用用于在答案文本内拆分的字符

答案 1 :(得分:2)

简单地说,创建两个表:

  • 问题

    question_id,问题

  • 答案

    answer_id,question_id,answer

现在,您可以使用 question_id

链接这两个表格

答案 2 :(得分:2)

表:

测验

quiz id (pk)
quiz info (other columns)

<强>问题

question id(pk)
quiz id
question text

<强>答案

answer id(pk)
question id
answer text

要显示给定的问题,请在测验,问题和答案上加入。

编辑:您可以为“正确/错误答案(0/1)”添加列,也可以使用另一个表:

<强>解决方案

解决方案ID(pk)
   问题id    回答id

我没有在answers表中列出'正确答案',因为这不是很好的规范化。

答案 3 :(得分:2)

有几种解决方法:

  • “正确”的方法是创建另一个表(这样你就有了一个名为“questions”的表,每个表都有一个唯一的id,另一个叫做“answers”,每个表都有问题id)
  • “简单”方式,即使用JSON(请参阅json_encodejson_decode)来处理在字段中使用特殊字符等

答案 4 :(得分:2)

可能有很多可能的架构设计,但我的建议是这样的:

不要在表格中存储以逗号分隔的值。

此表包含测验。

测验表

  • QuizID(PK)
  • 其他栏目..

这包含每个测验的问题。

问题表

  • QuestionID(PK)
  • QuestionDetail
  • QuizID(FK)
  • 其他栏目......

这就是答案。

答案表

  • AnswerID(PK)
  • AnswerDetail

这为每个测验中的每个问题保留了正确的答案,换句话说,这是答案的关键。

Question_Answer_Correct Table

  • QuestionID(FK) - 也是AnswerID
  • 的复合主键
  • AnswerID(FK)

这包含用户列表。

用户表

  • UserID(PK)
  • 用户名
  • 其他栏目......

这包含指定问题的用户答案。此处没有QuizID,因为问题已在测验表上连接。

User_Answers表

  • UserID(FK)
  • QuestionID(FK)
  • AnswerID(FK)

答案 5 :(得分:2)

你有一个questions表,如下所示:

id  |            question
0             Do you even lift?

idINT(11) PRIMARY_KEY AUTO_INCREMENT,而questionTEXT。然后,您将拥有一个answers表:

id  | question_id | answer
0          0         Yes
1          0         No
2          0         Maybe

此处,question_id是指questions表中问题的ID。这些答案都属于一个问题。这被称为Has many关系,因为一个问题有很多答案。

通常这样做。即使您没有使用框架(大部分都是为您完成工作),实现它也不是那么难。

希望这有帮助