SQL Insert语句在同一行上

时间:2015-03-14 16:34:53

标签: php sql

我目前正在使用PHP构建一个学习平台,并希望记录用户对所提问题的响应 - 我已经在几个php页面上构建了数据库和问题,并使用insert语句将响应值添加到数据库中,但是当用户移动并回答下一个问题时,他们的答案将放在下一个SQL行上,这意味着SQL数据库中有大的空白区域。是否可以将用户对每个问题的回答放在同一条线上,或者这是我将不得不习惯和忍受的事情?

我的插入语句如下所示:

$sql="INSERT INTO pro_NoMusic (question8a, question8b, question8c, question8d, question8e) 
      VALUES ('$_POST[question8a]','$_POST[question8b]','$_POST[question8c]','$_POST‌​[question8d]','$_POST[question8e]')";

我的表格中有每个问题的列:

question1a, question2Aa, question2Ab, question2Ac, question2Ad, question2Ae,
question2Ba, question2Bb, question2Bc, question2Bd, question2Be,
question2Ca, question2Cb, question2Cc, question2Cd, question2Ce,
question2Da, question2Db, question2Dc, question2Dd, question2De,
question3a,question3b, question3c, question3d, question3e, question4,
question5a, question5b, question5c, question5d, question5e, question6,
question7, question8a, question8b, question8c, question8d, question8e

1 个答案:

答案 0 :(得分:0)

我想知道您如何记录哪些用户正在回答这些问题?大多数设计师会在这样的表中包含某种user_id列。

专业提示:规范化此数据。许多设计师会使用这样的表来获得这样的答案。

user_id      int(11)  
question     varchar(10)   values like '1a', '2Aa', '8d', etc.
answer       varchar(255)
ts           datetime

这里的主键可能是(user_id,question)的复合键。对于任何问题,此表格将包含每行答案一行,而不是整齐的列,其中包含测验中所有问题的答案。

然后你可以使用一系列`INSERT ... ON DUPLICATE KEY UPDATE语句来记录你的用户'数据库中的答案。

$sql="INSERT INTO pro_NoMusic (userid, question, answer, ts)
      VALUES ($_POST[user_id], '8a','$_POST[question8a]', NOW())
      ON DUPLICATE KEY UPDATE answer='$_POST[question8a]', ts=NOW())";