我目前正在使用 PHP 构建一个学习平台,并希望记录用户对所提问题的回答 - 我已经在几个 php 页面上构建了数据库和问题,并使用插入语句将响应值添加到数据库中,但是当用户移动到并回答下一个问题时,他们的答案被放在下一个 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
我想知道您如何记录哪些用户在回答这些问题? 大多数设计器会在这样的表中包含某种user_id
列。
专业提示:规范化此数据。许多设计师会使用这样的表格来回答这样的答案。
user_id int(11)
question varchar(10) values like '1a', '2Aa', '8d', etc.
answer varchar(255)
ts datetime
这里的主键可能是(user_id,问题)的复合键。 此表将包含任何问题的每个答案的一行,而不是包含测验中所有问题的答案的一大堆列。
然后,您可以使用一系列"插入...关于重复键更新语句,以在数据库中记录用户的答案。
$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())";