从代码

时间:2016-07-02 16:31:18

标签: moodle moodle-api

我有一个问题,我如何根据参数"大于"从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');**

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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

感谢Davo当时的回应(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]);

该查询将返回测验结果的记录,其中包含所有40岁以上的学生ID和年级。