带有用户和答案的 PHP 测验系统

标签 php mysql pdo

将尝试解释我的问题,抱歉我的英语不好:)

我正忙于测验系统。

那么表格是什么样的:

- Users
- Question
- Answers
- Sended Answers

对于我的问题,用户表并不是必需的。

问题表如下:

- Questions.ID
- Question.Text (the question)

答案表是这样的:

- Answers.ID
- Answers.QuestionID
- Answers.Text
- Answers.Good

发送的答案表如下:

- sAnswers.ID
- sAnswers.QuestionID
- sAnswers.FilledAnswers
- sAnswers.UserID

Answers.Good 就像 0 = 不好/1 = 好。

什么是我使用 UsersName 获取所有已发送的答案并查找 sAnswers 是否正确。

我试过:

public function countScores($bind=""){
  $sql = "SELECT sAnswers.*, users.name, Answers.*
  FROM sAnswers
  INNER JOIN users ON sAnswers.userID = users.id
  INNER JOIN Answers ON sAnswers.FilledAnswers = Answers.QuestionID";
  $result = $this->run($sql,$bind);
  return $result;
}

但结果比 sAwnsers 多。 我做错了什么:-o

最佳答案

我不确定你的模式设计是什么,但只是猜测,你对答案的加入应该是这样的Answers.ID

INNER JOIN users ON sAnswers.userID = users.id
INNER JOIN Answers ON sAnswers.FilledAnswers = Answers.ID";

你确定 inner join 会在你的情况下工作吗,也就是说,如果所有的表都被填满,为了安全起见,尝试做 left join

LEFT JOIN users ON sAnswers.userID = users.id
LEFT JOIN Answers ON sAnswers.FilledAnswers = Answers.ID

关于带有用户和答案的 PHP 测验系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50336918/

相关文章:

php - SELECT DISTINCT 仍然显示重复项

MySQL - 嵌入式选择 - 如何将行放入列中?

php - 使用 MySQL 查找树中的级别数

php - "Warning: PDO::prepare() expects parameter 2 to be array, string given"- 当仅指定一个参数时

安卓应用程序。选项卡 fragment 上的 Mysql ListView

php - 如何在mysql查询中找到2个日期的总小时数

php - 使用 php、mysql 和 javascript 更改输入字段的文本

php - 如何在不编写新函数的情况下从另一个文件调用变量

php - 过滤数字 PIN 码字符串数组,格式可能为 "######"或 "### ###"

mysql - MySQL 更新查询错误 (#1093)