我有一个问题,我如何根据参数"大于"从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');**
最后,我想在每个测验中获得系统中每个用户的所有测验问号。
答案 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和年级。