0

我有一个关于如何根据“大于”或“小于”给定值的参数从 Moodle 中提取数据的问题。例如,我想做类似的事情:

**$record = $DB->get_record_sql('SELECT * FROM {question_attempts} WHERE questionid > ?', array(1));**

我怎样才能做到这一点,因为每次我尝试这个时,我都会得到一条记录作为回报,而不是满足这个特定条件的所有行。

另外,我怎样才能让这样的查询完美地工作?

**$sql = ('SELECT * FROM {question_attempts} qa join {question_attempt_steps} qas on qas.questionattemptid = qa.id');**

最后,我想在每个测验中获取系统上每个用户的所有测验问号。

4

2 回答 2

2

如果您希望返回多条记录,请使用 $DB->get_records_sql() 而不是 $DB->get_record_sql。

于 2016-07-02T18:19:59.040 回答
1

感谢达沃当时的回应(2016 年,哇!)。随着时间的推移,我确实设法学会了这一点。

好吧,这是一个使用 > 或 < 运算符从 Moodle DB 获取结果的正确查询示例:

$quizid = 100; // just an example param here
$cutoffmark = 40 // anyone above 40% gets a Moodle badge!!
$sql = "SELECT q.name, qg.userid, qg.grade FROM {quiz} q JOIN {quiz_grades} qg ON qg.quiz = q.id WHERE q.id = ? AND qg.grade > ?";

$records = $DB->get_records_sql($sql, [$quizid, $cutoffmark]);

该查询将返回所有学生 ID 和成绩的测验结果记录,这些学生的成绩超过 40。

于 2018-06-29T16:50:27.070 回答